mirror of https://github.com/golang/go.git
image/jpeg: initialize dct_test constants at compile time
Doing so is slightly more accurate than calculating at run time (because of float64 rounding errors): https://go.dev/play/p/hrOzHDLjd5K Having these more accurate values isn't necessary for tests to pass, but it's helpful if doing printf-debugging or stepping through the code. Change-Id: I07a65678936e4db05b11f9d8d952b32b2acd51a8 Reviewed-on: https://go-review.googlesource.com/c/go/+/624716 Reviewed-by: Dmitri Shuralyov <dmitshur@google.com> Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org> Reviewed-by: Nigel Tao <nigeltao@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
This commit is contained in:
parent
eb29beb0ad
commit
9088883cf4
|
|
@ -112,12 +112,42 @@ func alpha(i int) float64 {
|
|||
return math.Sqrt2
|
||||
}
|
||||
|
||||
var cosines [32]float64 // cosines[k] = cos(π/2 * k/8)
|
||||
var cosines = [32]float64{
|
||||
+1.0000000000000000000000000000000000000000000000000000000000000000, // cos(π/16 * 0)
|
||||
+0.9807852804032304491261822361342390369739337308933360950029160885, // cos(π/16 * 1)
|
||||
+0.9238795325112867561281831893967882868224166258636424861150977312, // cos(π/16 * 2)
|
||||
+0.8314696123025452370787883776179057567385608119872499634461245902, // cos(π/16 * 3)
|
||||
+0.7071067811865475244008443621048490392848359376884740365883398689, // cos(π/16 * 4)
|
||||
+0.5555702330196022247428308139485328743749371907548040459241535282, // cos(π/16 * 5)
|
||||
+0.3826834323650897717284599840303988667613445624856270414338006356, // cos(π/16 * 6)
|
||||
+0.1950903220161282678482848684770222409276916177519548077545020894, // cos(π/16 * 7)
|
||||
|
||||
func init() {
|
||||
for k := range cosines {
|
||||
cosines[k] = math.Cos(math.Pi * float64(k) / 16)
|
||||
}
|
||||
-0.0000000000000000000000000000000000000000000000000000000000000000, // cos(π/16 * 8)
|
||||
-0.1950903220161282678482848684770222409276916177519548077545020894, // cos(π/16 * 9)
|
||||
-0.3826834323650897717284599840303988667613445624856270414338006356, // cos(π/16 * 10)
|
||||
-0.5555702330196022247428308139485328743749371907548040459241535282, // cos(π/16 * 11)
|
||||
-0.7071067811865475244008443621048490392848359376884740365883398689, // cos(π/16 * 12)
|
||||
-0.8314696123025452370787883776179057567385608119872499634461245902, // cos(π/16 * 13)
|
||||
-0.9238795325112867561281831893967882868224166258636424861150977312, // cos(π/16 * 14)
|
||||
-0.9807852804032304491261822361342390369739337308933360950029160885, // cos(π/16 * 15)
|
||||
|
||||
-1.0000000000000000000000000000000000000000000000000000000000000000, // cos(π/16 * 16)
|
||||
-0.9807852804032304491261822361342390369739337308933360950029160885, // cos(π/16 * 17)
|
||||
-0.9238795325112867561281831893967882868224166258636424861150977312, // cos(π/16 * 18)
|
||||
-0.8314696123025452370787883776179057567385608119872499634461245902, // cos(π/16 * 19)
|
||||
-0.7071067811865475244008443621048490392848359376884740365883398689, // cos(π/16 * 20)
|
||||
-0.5555702330196022247428308139485328743749371907548040459241535282, // cos(π/16 * 21)
|
||||
-0.3826834323650897717284599840303988667613445624856270414338006356, // cos(π/16 * 22)
|
||||
-0.1950903220161282678482848684770222409276916177519548077545020894, // cos(π/16 * 23)
|
||||
|
||||
+0.0000000000000000000000000000000000000000000000000000000000000000, // cos(π/16 * 24)
|
||||
+0.1950903220161282678482848684770222409276916177519548077545020894, // cos(π/16 * 25)
|
||||
+0.3826834323650897717284599840303988667613445624856270414338006356, // cos(π/16 * 26)
|
||||
+0.5555702330196022247428308139485328743749371907548040459241535282, // cos(π/16 * 27)
|
||||
+0.7071067811865475244008443621048490392848359376884740365883398689, // cos(π/16 * 28)
|
||||
+0.8314696123025452370787883776179057567385608119872499634461245902, // cos(π/16 * 29)
|
||||
+0.9238795325112867561281831893967882868224166258636424861150977312, // cos(π/16 * 30)
|
||||
+0.9807852804032304491261822361342390369739337308933360950029160885, // cos(π/16 * 31)
|
||||
}
|
||||
|
||||
// slowFDCT performs the 8*8 2-dimensional forward discrete cosine transform:
|
||||
|
|
|
|||
Loading…
Reference in New Issue