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: