github.com/gopherd/gonum@v0.0.4/blas/gonum/gonum.go (about) 1 // Copyright ©2015 The Gonum Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 //go:generate ./single_precision.bash 6 7 package gonum 8 9 import ( 10 "math" 11 12 "github.com/gopherd/gonum/internal/math32" 13 ) 14 15 type Implementation struct{} 16 17 // [SD]gemm behavior constants. These are kept here to keep them out of the 18 // way during single precision code genration. 19 const ( 20 blockSize = 64 // b x b matrix 21 minParBlock = 4 // minimum number of blocks needed to go parallel 22 ) 23 24 func max(a, b int) int { 25 if a > b { 26 return a 27 } 28 return b 29 } 30 31 func min(a, b int) int { 32 if a > b { 33 return b 34 } 35 return a 36 } 37 38 // blocks returns the number of divisions of the dimension length with the given 39 // block size. 40 func blocks(dim, bsize int) int { 41 return (dim + bsize - 1) / bsize 42 } 43 44 // dcabs1 returns |real(z)|+|imag(z)|. 45 func dcabs1(z complex128) float64 { 46 return math.Abs(real(z)) + math.Abs(imag(z)) 47 } 48 49 // scabs1 returns |real(z)|+|imag(z)|. 50 func scabs1(z complex64) float32 { 51 return math32.Abs(real(z)) + math32.Abs(imag(z)) 52 }