Files
astro/internal/ltp/basis_test.go
T

44 lines
1.1 KiB
Go
Raw Normal View History

// 被测契约:缓存基与精确基在覆盖区间内相差 < 1e-12,区间外逐位相同。
package ltp
import (
"math"
"testing"
)
func TestEclipticBasisMatchesExact(t *testing.T) {
worst := 0.0
for epj := -10199.9; epj < 10199.9; epj += 3.137 {
ax, ay, az := EclipticBasis(epj)
ex, ey, ez := EclipticBasisExact(epj)
for i := 0; i < 3; i++ {
worst = math.Max(worst, math.Abs(ax[i]-ex[i]))
worst = math.Max(worst, math.Abs(ay[i]-ey[i]))
worst = math.Max(worst, math.Abs(az[i]-ez[i]))
}
}
t.Logf("max component diff %.3g", worst)
if worst > 1e-12 {
t.Fatalf("cached basis differs by %.3g", worst)
}
for _, epj := range []float64{-10300, 10300} {
ax, _, az := EclipticBasis(epj)
ex, _, ez := EclipticBasisExact(epj)
if ax != ex || az != ez {
t.Fatalf("epj %v: outside the cache the exact basis must be used", epj)
}
}
}
func BenchmarkEclipticBasis(b *testing.B) {
for i := 0; i < b.N; i++ {
EclipticBasis(2000 + float64(i%7300)*0.27)
}
}
func BenchmarkEclipticBasisExact(b *testing.B) {
for i := 0; i < b.N; i++ {
EclipticBasisExact(2000 + float64(i%7300)*0.27)
}
}