12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- // 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.
- //go:generate ./single_precision.bash
- package gonum
- import (
- "math"
- "gonum.org/v1/gonum/internal/math32"
- )
- type Implementation struct{}
- // [SD]gemm behavior constants. These are kept here to keep them out of the
- // way during single precision code genration.
- const (
- blockSize = 64 // b x b matrix
- minParBlock = 4 // minimum number of blocks needed to go parallel
- )
- func max(a, b int) int {
- if a > b {
- return a
- }
- return b
- }
- func min(a, b int) int {
- if a > b {
- return b
- }
- return a
- }
- // blocks returns the number of divisions of the dimension length with the given
- // block size.
- func blocks(dim, bsize int) int {
- return (dim + bsize - 1) / bsize
- }
- // dcabs1 returns |real(z)|+|imag(z)|.
- func dcabs1(z complex128) float64 {
- return math.Abs(real(z)) + math.Abs(imag(z))
- }
- // scabs1 returns |real(z)|+|imag(z)|.
- func scabs1(z complex64) float32 {
- return math32.Abs(real(z)) + math32.Abs(imag(z))
- }
|