enhance: [GoSDK] Refine float point conversion precision loss ut (#38097)

Previous PR: #37978

This unit test is unable due to dim is a random number. When dim is
large enough precision loss will be greater than 0.04

Signed-off-by: Congqi Xia <congqi.xia@zilliz.com>
pull/37976/head^2
congqixia 2024-11-29 16:54:36 +08:00 committed by GitHub
parent 61f73d552f
commit fdea7a7898
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 6 additions and 3 deletions

View File

@ -56,7 +56,7 @@ func TestVectors(t *testing.T) {
t.Run("test fp32 <-> fp16/bf16 vector conversion", func(t *testing.T) {
raw := make([]float32, dim)
for i := 0; i < dim; i++ {
raw[i] = float32(i) * 0.1
raw[i] = rand.Float32() // rand result [0.1, 1.0)
}
fv := FloatVector(raw)
@ -68,14 +68,17 @@ func TestVectors(t *testing.T) {
assert.Equal(t, dim, bf16v.Dim())
assert.Equal(t, dim*2, len(bf16v.Serialize()))
// TODO calculate max precision loss
maxDelta := float64(0.4)
fp32vFromfp16v := fp16v.ToFloat32Vector()
for i := 0; i < dim; i++ {
assert.InDelta(t, fv[i], fp32vFromfp16v[i], 0.04)
assert.InDelta(t, fv[i], fp32vFromfp16v[i], maxDelta)
}
fp32vFrombf16v := bf16v.ToFloat32Vector()
for i := 0; i < dim; i++ {
assert.InDelta(t, fp32vFromfp16v[i], fp32vFrombf16v[i], 0.04)
assert.InDelta(t, fp32vFromfp16v[i], fp32vFrombf16v[i], maxDelta)
}
})