Skip to content

Commit a2d824b

Browse files
committed
Add h property to Double/Float to create Half values
This makes it slightly easier to write constants: 3.1415.0.h 0.5.h
1 parent 9ae803a commit a2d824b

File tree

4 files changed

+135
-93
lines changed

4 files changed

+135
-93
lines changed

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ repositories {
2626
}
2727
2828
dependencies {
29-
implementation 'dev.romainguy:kotlin-math:1.5.0'
29+
implementation 'dev.romainguy:kotlin-math:1.5.1'
3030
}
3131
```
3232

gradle.properties

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
GROUP=dev.romainguy
2-
VERSION_NAME=1.5.0
2+
VERSION_NAME=1.5.1
33

44
POM_DESCRIPTION=Graphics oriented math library for Kotlin
55

src/commonMain/kotlin/dev/romainguy/kotlin/math/Half.kt

+42
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,27 @@ fun Half(value: Double) = Half(floatToHalf(value.toFloat()))
6666
*/
6767
fun Double.toHalf() = Half(floatToHalf(toFloat()))
6868

69+
/**
70+
* Converts this double-precision float value into a half-precision float value.
71+
* The following special cases are handled:
72+
*
73+
* - If the input is NaN (see [Double.isNaN]), the returned value is [Half.NaN]
74+
* - If the input is [Double.POSITIVE_INFINITY] or [Double.NEGATIVE_INFINITY],
75+
* the returned value is respectively [Half.POSITIVE_INFINITY] or [Half.NEGATIVE_INFINITY]
76+
* - If the input is 0 (positive or negative), the returned value is [Half.POSITIVE_ZERO]
77+
* or [Half.NEGATIVE_ZERO]
78+
* - If the input is less than [Half.MIN_VALUE], the returned value is flushed to
79+
* [Half.POSITIVE_ZERO] or [Half.NEGATIVE_ZERO]
80+
* - If the input is less than [Half.MIN_NORMAL], the returned value is a denormal
81+
* half-precision float
82+
* - Otherwise, the returned value is rounded to the nearest representable
83+
* half-precision float value
84+
*
85+
* @return A half-precision float value
86+
*/
87+
val Double.h: Half
88+
get() = Half(floatToHalf(toFloat()))
89+
6990
/**
7091
* Converts the specified single-precision float value into a
7192
* half-precision float value. The following special cases are handled:
@@ -107,6 +128,27 @@ fun Half(value: Float) = Half(floatToHalf(value))
107128
*/
108129
fun Float.toHalf() = Half(floatToHalf(this))
109130

131+
/**
132+
* Converts this single-precision float value into a half-precision float value.
133+
* The following special cases are handled:
134+
*
135+
* - If the input is NaN (see [Float.isNaN]), the returned value is [Half.NaN]
136+
* - If the input is [Float.POSITIVE_INFINITY] or [Float.NEGATIVE_INFINITY],
137+
* the returned value is respectively [Half.POSITIVE_INFINITY] or [Half.NEGATIVE_INFINITY]
138+
* - If the input is 0 (positive or negative), the returned value is [Half.POSITIVE_ZERO]
139+
* or [Half.NEGATIVE_ZERO]
140+
* - If the input is less than [Half.MIN_VALUE], the returned value is flushed to
141+
* [Half.POSITIVE_ZERO] or [Half.NEGATIVE_ZERO]
142+
* - If the input is less than [Half.MIN_NORMAL], the returned value is a denormal
143+
* half-precision float
144+
* - Otherwise, the returned value is rounded to the nearest representable
145+
* half-precision float value
146+
*
147+
* @return A half-precision float value
148+
*/
149+
val Float.h: Half
150+
get() = Half(floatToHalf(this))
151+
110152
/**
111153
* Returns the half-precision float value represented by the specified string.
112154
* The string is converted to a half-precision float value as if by the

src/commonTest/kotlin/dev/romainguy/kotlin/math/HalfTest.kt

+91-91
Original file line numberDiff line numberDiff line change
@@ -293,19 +293,19 @@ class HalfTest {
293293

294294
@Test
295295
fun conversions() {
296-
assertEquals(12, Half(12.57f).toByte())
297-
assertEquals(12, Half(12.57f).toShort())
298-
assertEquals(12, Half(12.57f).toInt())
299-
assertEquals(12, Half(12.57f).toLong())
300-
assertEquals(12.57f, Half(12.57f).toFloat(), 1e-3f)
301-
assertEquals(12.57, Half(12.57f).toDouble(), 1e-3)
302-
303-
assertEquals(-12, Half(-12.57f).toByte())
304-
assertEquals(-12, Half(-12.57f).toShort())
305-
assertEquals(-12, Half(-12.57f).toInt())
306-
assertEquals(-12, Half(-12.57f).toLong())
307-
assertEquals(-12.57f, Half(-12.57f).toFloat(), 1e-3f)
308-
assertEquals(-12.57, Half(-12.57f).toDouble(), 1e-3)
296+
assertEquals(12, 12.57.h.toByte())
297+
assertEquals(12, 12.57.h.toShort())
298+
assertEquals(12, 12.57.h.toInt())
299+
assertEquals(12, 12.57.h.toLong())
300+
assertEquals(12.57f, 12.57.h.toFloat(), 1e-3f)
301+
assertEquals(12.57, 12.57.h.toDouble(), 1e-3)
302+
303+
assertEquals(-12, -12.57.h.toByte())
304+
assertEquals(-12, -12.57.h.toShort())
305+
assertEquals(-12, -12.57.h.toInt())
306+
assertEquals(-12, -12.57.h.toLong())
307+
assertEquals(-12.57f, -12.57.h.toFloat(), 1e-3f)
308+
assertEquals(-12.57, -12.57.h.toDouble(), 1e-3)
309309

310310
assertEquals(0, Half.POSITIVE_ZERO.toByte())
311311
assertEquals(0, Half.POSITIVE_ZERO.toShort())
@@ -354,8 +354,8 @@ class HalfTest {
354354
assertEquals(Half.MIN_VALUE, min(Half.MIN_VALUE, Half.MIN_NORMAL))
355355
assertEquals(Half.POSITIVE_ZERO, min(Half.MIN_VALUE, Half.POSITIVE_ZERO))
356356
assertEquals(Half.POSITIVE_ZERO, min(Half.MIN_NORMAL, Half.POSITIVE_ZERO))
357-
assertEquals(Half(-3.456f), min(Half(-3.456f), Half(-3.453f)))
358-
assertEquals(Half(3.453f), min(Half(3.456f), Half(3.453f)))
357+
assertEquals((-3.456).h, min((-3.456).h, (-3.453).h))
358+
assertEquals(3.453.h, min(3.456.h, 3.453.h))
359359
}
360360

361361
@Test
@@ -369,8 +369,8 @@ class HalfTest {
369369
assertEquals(Half.MIN_NORMAL, max(Half.MIN_VALUE, Half.MIN_NORMAL))
370370
assertEquals(Half.MIN_VALUE, max(Half.MIN_VALUE, Half.POSITIVE_ZERO))
371371
assertEquals(Half.MIN_NORMAL, max(Half.MIN_NORMAL, Half.POSITIVE_ZERO))
372-
assertEquals(Half(-3.453f), max(Half(-3.456f), Half(-3.453f)))
373-
assertEquals(Half(3.456f), max(Half(3.456f), Half(3.453f)))
372+
assertEquals((-3.453).h, max((-3.456).h, (-3.453).h))
373+
assertEquals(3.456.h, max(3.456.h, 3.453.h))
374374
}
375375

376376
@Test
@@ -381,14 +381,14 @@ class HalfTest {
381381
assertEquals(Half.NEGATIVE_ZERO, truncate(Half.NEGATIVE_ZERO))
382382
assertEquals(Half.NaN, truncate(Half.NaN))
383383
assertEquals(Half.LOWEST_VALUE, truncate(Half.LOWEST_VALUE))
384-
assertEquals(Half.POSITIVE_ZERO, truncate(Half(0.2f)))
385-
assertEquals(Half.NEGATIVE_ZERO, truncate(Half(-0.2f)))
386-
assertEquals(0.0f, truncate(Half(0.7f)).toFloat(), 1e-6f)
387-
assertEquals(-0.0f, truncate(Half(-0.7f)).toFloat(), 1e-6f)
388-
assertEquals(124.0f, truncate(Half(124.7f)).toFloat(), 1e-6f)
389-
assertEquals(-124.0f, truncate(Half(-124.7f)).toFloat(), 1e-6f)
390-
assertEquals(124.0f, truncate(Half(124.2f)).toFloat(), 1e-6f)
391-
assertEquals(-124.0f, truncate(Half(-124.2f)).toFloat(), 1e-6f)
384+
assertEquals(Half.POSITIVE_ZERO, truncate(0.2.h))
385+
assertEquals(Half.NEGATIVE_ZERO, truncate((-0.2).h))
386+
assertEquals(0.0f, truncate(0.7.h).toFloat(), 1e-6f)
387+
assertEquals(-0.0f, truncate((-0.7).h).toFloat(), 1e-6f)
388+
assertEquals(124.0f, truncate(124.7.h).toFloat(), 1e-6f)
389+
assertEquals(-124.0f, truncate((-124.7).h).toFloat(), 1e-6f)
390+
assertEquals(124.0f, truncate(124.2.h).toFloat(), 1e-6f)
391+
assertEquals(-124.0f, truncate((-124.2).h).toFloat(), 1e-6f)
392392
}
393393

394394
@Test
@@ -402,20 +402,20 @@ class HalfTest {
402402
assertEquals(Half.POSITIVE_ZERO, round(Half.MIN_VALUE))
403403
assertEquals(Half.POSITIVE_ZERO, round(Half(0x200.toUShort())))
404404
assertEquals(Half.POSITIVE_ZERO, round(Half(0x3ff.toUShort())))
405-
assertEquals(Half.POSITIVE_ZERO, round(Half(0.2f)))
406-
assertEquals(Half.NEGATIVE_ZERO, round(Half(-0.2f)))
407-
assertEquals(1.0f, round(Half(0.7f)).toFloat(), 1e-6f)
408-
assertEquals(-1.0f, round(Half(-0.7f)).toFloat(), 1e-6f)
409-
assertEquals(1.0f, round(Half(0.5f)).toFloat(), 1e-6f)
410-
assertEquals(-1.0f, round(Half(-0.5f)).toFloat(), 1e-6f)
411-
assertEquals(2.0f, round(Half(1.5f)).toFloat(), 1e-6f)
412-
assertEquals(-2.0f, round(Half(-1.5f)).toFloat(), 1e-6f)
413-
assertEquals(1023.0f, round(Half(1022.5f)).toFloat(), 1e-6f)
414-
assertEquals(-1023.0f, round(Half(-1022.5f)).toFloat(), 1e-6f)
415-
assertEquals(125.0f, round(Half(124.7f)).toFloat(), 1e-6f)
416-
assertEquals(-125.0f, round(Half(-124.7f)).toFloat(), 1e-6f)
417-
assertEquals(124.0f, round(Half(124.2f)).toFloat(), 1e-6f)
418-
assertEquals(-124.0f, round(Half(-124.2f)).toFloat(), 1e-6f)
405+
assertEquals(Half.POSITIVE_ZERO, round(0.2.h))
406+
assertEquals(Half.NEGATIVE_ZERO, round((-0.2).h))
407+
assertEquals(1.0f, round(0.7.h).toFloat(), 1e-6f)
408+
assertEquals(-1.0f, round((-0.7).h).toFloat(), 1e-6f)
409+
assertEquals(1.0f, round(0.5.h).toFloat(), 1e-6f)
410+
assertEquals(-1.0f, round((-0.5).h).toFloat(), 1e-6f)
411+
assertEquals(2.0f, round(1.5.h).toFloat(), 1e-6f)
412+
assertEquals(-2.0f, round((-1.5).h).toFloat(), 1e-6f)
413+
assertEquals(1023.0f, round(1022.5.h).toFloat(), 1e-6f)
414+
assertEquals(-1023.0f, round((-1022.5).h).toFloat(), 1e-6f)
415+
assertEquals(125.0f, round(124.7.h).toFloat(), 1e-6f)
416+
assertEquals(-125.0f, round((-124.7).h).toFloat(), 1e-6f)
417+
assertEquals(124.0f, round(124.2.h).toFloat(), 1e-6f)
418+
assertEquals(-124.0f, round((-124.2).h).toFloat(), 1e-6f)
419419
// round for NaN values
420420
// These tests check whether the current round implementation achieves
421421
// bit level compatibility with the hardware implementation (ARM64).
@@ -435,14 +435,14 @@ class HalfTest {
435435
assertEquals(Half.LOWEST_VALUE, floor(Half.LOWEST_VALUE))
436436
assertEquals(Half.POSITIVE_ZERO, floor(Half.MIN_NORMAL))
437437
assertEquals(Half.POSITIVE_ZERO, floor(Half(0x3ff.toUShort())))
438-
assertEquals(Half.POSITIVE_ZERO, floor(Half(0.2f)))
439-
assertEquals(-1.0f, floor(Half(-0.2f)).toFloat(), 1e-6f)
440-
assertEquals(-1.0f, floor(Half(-0.7f)).toFloat(), 1e-6f)
441-
assertEquals(Half.POSITIVE_ZERO, floor(Half(0.7f)))
442-
assertEquals(124.0f, floor(Half(124.7f)).toFloat(), 1e-6f)
443-
assertEquals(-125.0f, floor(Half(-124.7f)).toFloat(), 1e-6f)
444-
assertEquals(124.0f, floor(Half(124.2f)).toFloat(), 1e-6f)
445-
assertEquals(-125.0f, floor(Half(-124.2f)).toFloat(), 1e-6f)
438+
assertEquals(Half.POSITIVE_ZERO, floor(0.2.h))
439+
assertEquals(-1.0f, floor((-0.2).h).toFloat(), 1e-6f)
440+
assertEquals(-1.0f, floor((-0.7).h).toFloat(), 1e-6f)
441+
assertEquals(Half.POSITIVE_ZERO, floor(0.7.h))
442+
assertEquals(124.0f, floor(124.7.h).toFloat(), 1e-6f)
443+
assertEquals(-125.0f, floor((-124.7).h).toFloat(), 1e-6f)
444+
assertEquals(124.0f, floor(124.2.h).toFloat(), 1e-6f)
445+
assertEquals(-125.0f, floor((-124.2).h).toFloat(), 1e-6f)
446446
// floor for NaN values
447447
assertEquals(0x7e01, floor(Half(0x7c01.toUShort())).toBits())
448448
assertEquals(0x7f00, floor(Half(0x7d00.toUShort())).toBits())
@@ -460,14 +460,14 @@ class HalfTest {
460460
assertEquals(Half.LOWEST_VALUE, ceil(Half.LOWEST_VALUE))
461461
assertEquals(1.0f, ceil(Half.MIN_NORMAL).toFloat(), 1e-6f)
462462
assertEquals(1.0f, ceil(Half(0x3ff.toUShort())).toFloat(), 1e-6f)
463-
assertEquals(1.0f, ceil(Half(0.2f)).toFloat(), 1e-6f)
464-
assertEquals(Half.NEGATIVE_ZERO, ceil(Half(-0.2f)))
465-
assertEquals(1.0f, ceil(Half(0.7f)).toFloat(), 1e-6f)
466-
assertEquals(Half.NEGATIVE_ZERO, ceil(Half(-0.7f)))
467-
assertEquals(125.0f, ceil(Half(124.7f)).toFloat(), 1e-6f)
468-
assertEquals(-124.0f, ceil(Half(-124.7f)).toFloat(), 1e-6f)
469-
assertEquals(125.0f, ceil(Half(124.2f)).toFloat(), 1e-6f)
470-
assertEquals(-124.0f, ceil(Half(-124.2f)).toFloat(), 1e-6f)
463+
assertEquals(1.0f, ceil(0.2.h).toFloat(), 1e-6f)
464+
assertEquals(Half.NEGATIVE_ZERO, ceil((-0.2).h))
465+
assertEquals(1.0f, ceil(0.7.h).toFloat(), 1e-6f)
466+
assertEquals(Half.NEGATIVE_ZERO, ceil((-0.7).h))
467+
assertEquals(125.0f, ceil(124.7.h).toFloat(), 1e-6f)
468+
assertEquals(-124.0f, ceil((-124.7).h).toFloat(), 1e-6f)
469+
assertEquals(125.0f, ceil(124.2.h).toFloat(), 1e-6f)
470+
assertEquals(-124.0f, ceil((-124.2).h).toFloat(), 1e-6f)
471471
// ceil for NaN values
472472
// These tests check whether the current ceil implementation achieves
473473
// bit level compatibility with the hardware implementation (ARM64).
@@ -505,11 +505,11 @@ class HalfTest {
505505

506506
@Test
507507
fun next() {
508-
assertEquals(Half(1025.0f), Half(1024.0f).nextUp())
509-
assertEquals(Half(1023.5f), Half(1024.0f).nextDown())
508+
assertEquals(1025.0.h, 1024.0.h.nextUp())
509+
assertEquals(1023.5.h, 1024.0.h.nextDown())
510510

511-
assertEquals(Half(0.50048830f), Half(0.5f).nextUp())
512-
assertEquals(Half(0.49975586f), Half(0.5f).nextDown())
511+
assertEquals(0.50048830.h, 0.5.h.nextUp())
512+
assertEquals(0.49975586.h, 0.5.h.nextDown())
513513

514514
assertTrue(Half.NaN.nextUp().isNaN())
515515
assertTrue(Half.NaN.nextDown().isNaN())
@@ -531,11 +531,11 @@ class HalfTest {
531531
assertEquals(HALF_ONE, HALF_ONE.nextTowards(HALF_ONE))
532532
assertEquals(-HALF_ONE, (-HALF_ONE).nextTowards(-HALF_ONE))
533533

534-
assertEquals(Half(1025.0f), Half(1024.0f).nextTowards(Half(32768.0f)))
535-
assertEquals(Half(1023.5f), Half(1024.0f).nextTowards(Half(-32768.0f)))
534+
assertEquals(1025.0.h, 1024.0.h.nextTowards(32768.0.h))
535+
assertEquals(1023.5.h, 1024.0.h.nextTowards((-32768.0).h))
536536

537-
assertEquals(Half(0.50048830f), Half(0.5f).nextTowards(Half(32768.0f)))
538-
assertEquals(Half(0.49975586f), Half(0.5f).nextTowards(Half(-32768.0f)))
537+
assertEquals(0.50048830.h, 0.5.h.nextTowards(32768.0.h))
538+
assertEquals(0.49975586.h, 0.5.h.nextTowards((-32768.0).h))
539539
}
540540

541541
@Test
@@ -586,24 +586,24 @@ class HalfTest {
586586
// Overflow
587587
assertEquals(Half.POSITIVE_INFINITY, HALF_TWO * Half.MAX_VALUE)
588588
assertEquals(Half.POSITIVE_INFINITY, Half.MAX_VALUE * HALF_TWO)
589-
assertEquals(Half.NEGATIVE_INFINITY, Half(-2.0f) * Half.MAX_VALUE)
590-
assertEquals(Half.NEGATIVE_INFINITY, Half.MAX_VALUE * Half(-2.0f))
589+
assertEquals(Half.NEGATIVE_INFINITY, (-2.0).h * Half.MAX_VALUE)
590+
assertEquals(Half.NEGATIVE_INFINITY, Half.MAX_VALUE * (-2.0).h)
591591

592592
// Underflow
593593
assertEquals(Half.POSITIVE_ZERO, Half.MIN_VALUE * Half.MIN_NORMAL)
594594
assertEquals(Half.NEGATIVE_ZERO, Half.MIN_VALUE * -Half.MIN_NORMAL)
595595

596-
assertEquals(Half(8.0f), HALF_TWO * Half(4.0f))
597-
assertEquals(Half(2.88f), Half(1.2f) * Half(2.4f))
598-
assertEquals(Half(-2.88f), Half(1.2f) * Half(-2.4f))
599-
assertEquals(Half(-2.88f), Half(-1.2f) * Half(2.4f))
600-
assertEquals(Half(2.88f), Half(-1.2f) * Half(-2.4f))
596+
assertEquals(8.0.h, HALF_TWO * 4.0.h)
597+
assertEquals(2.88.h, 1.2.h * 2.4.h)
598+
assertEquals((-2.88).h, 1.2.h * (-2.4).h)
599+
assertEquals((-2.88).h, (-1.2).h * 2.4.h)
600+
assertEquals(2.88.h, (-1.2).h * (-2.4).h)
601601

602-
assertEquals(Half(48_000.0f), Half(3.0f) * Half(16_000.0f))
603-
assertEquals(Half(-48_000.0f), Half(3.0f) * Half(-16_000.0f))
602+
assertEquals(48_000.0.h, 3.0.h * 16_000.0.h)
603+
assertEquals((-48_000.0).h, 3.0.h * (-16_000.0).h)
604604

605-
assertEquals(Half(0.000012f), Half(0.03f) * Half(0.0004f))
606-
assertEquals(Half(-0.000012f), Half(0.03f) * Half(-0.0004f))
605+
assertEquals(0.000012.h, 0.03.h * 0.0004.h)
606+
assertEquals((-0.000012).h, 0.03.h * (-0.0004).h)
607607
}
608608

609609
@Test
@@ -639,20 +639,20 @@ class HalfTest {
639639
assertEquals(Half.POSITIVE_INFINITY, Half.MAX_VALUE / Half.MIN_VALUE)
640640
assertEquals(Half.NEGATIVE_INFINITY, (-Half.MAX_VALUE) / Half.MIN_VALUE)
641641

642-
assertEquals(Half(0.5f), HALF_TWO / Half(4.0f))
643-
assertEquals(Half(0.5f), Half(1.2f) / Half(2.4f))
644-
assertEquals(Half(-0.5f), Half(1.2f) / Half(-2.4f))
645-
assertEquals(Half(-0.5f), Half(-1.2f) / Half(2.4f))
646-
assertEquals(Half(0.5f), Half(-1.2f) / Half(-2.4f))
642+
assertEquals(0.5.h, HALF_TWO / 4.0.h)
643+
assertEquals(0.5.h, 1.2.h / 2.4.h)
644+
assertEquals((-0.5).h, 1.2.h / (-2.4).h)
645+
assertEquals((-0.5).h, (-1.2).h / 2.4.h)
646+
assertEquals(0.5.h, (-1.2).h / (-2.4).h)
647647

648-
assertEquals(Half(16_000.0f), Half(48_000.0f) / Half(3.0f))
649-
assertEquals(Half(-16_000.0f), Half(48_000.0f) / Half(-3.0f))
648+
assertEquals(16_000.0.h, 48_000.0.h / 3.0.h)
649+
assertEquals((-16_000.0).h, 48_000.0.h / (-3.0).h)
650650

651-
assertEquals(Half(2.0861626e-5f), HALF_ONE / Half(48_000.0f))
652-
assertEquals(Half(-2.0861626e-5), HALF_ONE / Half(-48_000.0f))
651+
assertEquals(Half(2.0861626e-5f), HALF_ONE / 48_000.0.h)
652+
assertEquals(Half(-2.0861626e-5), HALF_ONE / (-48_000.0).h)
653653

654-
assertEquals(Half(75.0f), Half(0.03f) / Half(0.0004f))
655-
assertEquals(Half(-75.0f), Half(0.03f) / Half(-0.0004f))
654+
assertEquals(75.0.h, 0.03.h / 0.0004.h)
655+
assertEquals((-75.0).h, 0.03.h / (-0.0004).h)
656656
}
657657

658658
@Test
@@ -662,7 +662,7 @@ class HalfTest {
662662
assertTrue((Half.NaN + HALF_ONE).isNaN())
663663
assertTrue((Half.NaN - HALF_ONE).isNaN())
664664
assertTrue((HALF_ONE + Half.NaN).isNaN())
665-
assertTrue((Half(-1.0f) + Half.NaN).isNaN())
665+
assertTrue(((-1.0).h + Half.NaN).isNaN())
666666

667667
assertTrue((Half.NaN + Half.POSITIVE_INFINITY).isNaN())
668668
assertTrue((Half.POSITIVE_INFINITY + Half.NaN).isNaN())
@@ -688,12 +688,12 @@ class HalfTest {
688688
assertTrue((Half.NEGATIVE_INFINITY + Half.NEGATIVE_INFINITY).isInfinite())
689689
assertTrue((Half.NEGATIVE_INFINITY - Half.NEGATIVE_INFINITY).isNaN())
690690

691-
assertEquals(Half(3.0f), HALF_ONE + HALF_TWO)
691+
assertEquals(3.0.h, HALF_ONE + HALF_TWO)
692692

693693
// Overflow
694-
assertEquals(Half.POSITIVE_INFINITY, Half(32768.0f) + Half(32768.0f))
694+
assertEquals(Half.POSITIVE_INFINITY, 32768.0.h + 32768.0.h)
695695
// Underflow
696-
assertEquals(Half.NEGATIVE_INFINITY, Half(-32768.0f) - Half(32768.0f))
696+
assertEquals(Half.NEGATIVE_INFINITY, (-32768.0).h - 32768.0.h)
697697

698698
for (i in 0x0..0xffff) {
699699
val v1 = Half(i.toUShort())
@@ -716,8 +716,8 @@ class HalfTest {
716716
assertEquals(Half.MIN_VALUE, Half.POSITIVE_ZERO.ulp)
717717
assertEquals(Half.MIN_VALUE, Half.NEGATIVE_ZERO.ulp)
718718

719-
assertEquals(HALF_ONE, Half(1024.0f).ulp)
720-
assertEquals(HALF_ONE, Half(-1024.0f).ulp)
719+
assertEquals(HALF_ONE, 1024.0.h.ulp)
720+
assertEquals(HALF_ONE, (-1024.0).h.ulp)
721721
}
722722

723723
@Test

0 commit comments

Comments
 (0)