aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorNigel Tao <nigeltao@golang.org>2024-11-03 23:21:45 +1100
committerNigel Tao <nigeltao@golang.org>2024-11-06 21:57:39 +0000
commit9088883cf4a5181cf796c968bbce5a5bc3edc7ab (patch)
tree1791f8433816261b344a2225284c0ab150b7c9b1 /src
parenteb29beb0ad83353097786cda793af8dea0b05b27 (diff)
downloadgo-9088883cf4a5181cf796c968bbce5a5bc3edc7ab.tar.xz
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>
Diffstat (limited to 'src')
-rw-r--r--src/image/jpeg/dct_test.go40
1 files changed, 35 insertions, 5 deletions
diff --git a/src/image/jpeg/dct_test.go b/src/image/jpeg/dct_test.go
index ed5b73d562..11819db86e 100644
--- a/src/image/jpeg/dct_test.go
+++ b/src/image/jpeg/dct_test.go
@@ -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: