mirror of
				https://github.com/gonum/gonum.git
				synced 2025-10-31 10:36:30 +08:00 
			
		
		
		
	matrix: imported matrix as a subtree
This commit is contained in:
		
							
								
								
									
										24
									
								
								matrix/mat64/offset_appengine.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								matrix/mat64/offset_appengine.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,24 @@ | ||||
| // Copyright ©2015 The gonum Authors. All rights reserved. | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
|  | ||||
| //+build appengine | ||||
|  | ||||
| package mat64 | ||||
|  | ||||
| import "reflect" | ||||
|  | ||||
| var sizeOfFloat64 = int(reflect.TypeOf(float64(0)).Size()) | ||||
|  | ||||
| // offset returns the number of float64 values b[0] is after a[0]. | ||||
| func offset(a, b []float64) int { | ||||
| 	va0 := reflect.ValueOf(a).Index(0) | ||||
| 	vb0 := reflect.ValueOf(b).Index(0) | ||||
| 	if va0.Addr() == vb0.Addr() { | ||||
| 		return 0 | ||||
| 	} | ||||
| 	// This expression must be atomic with respect to GC moves. | ||||
| 	// At this stage this is true, because the GC does not | ||||
| 	// move. See https://golang.org/issue/12445. | ||||
| 	return int(vb0.UnsafeAddr()-va0.UnsafeAddr()) / sizeOfFloat64 | ||||
| } | ||||
		Reference in New Issue
	
	Block a user
	 Brendan Tracey
					Brendan Tracey