compiler: add complex manipulation

* builtins: real, imag, complex
* printing of complex numbers

No support for complex arithmetic yet.
This commit is contained in:
Ayke van Laethem
2018-10-22 13:44:59 +02:00
parent 9393cdd5ed
commit 9b9b66a09d
7 changed files with 145 additions and 7 deletions
+20
View File
@@ -23,4 +23,24 @@ func main() {
// casting
println(float32(f64))
println(float64(f32))
// complex64
c64 := complex(f32, 1.2)
println(c64)
println(real(c64))
println(imag(c64))
// complex128
c128 := complex(f64, -2.0)
println(c128)
println(real(c128))
println(imag(c128))
// untyped complex
println(2 + 1i)
println(complex(2, -2))
// cast complex
println(complex64(c128))
println(complex128(c64))
}
+10
View File
@@ -11,3 +11,13 @@
+3.333333e-001
+6.666667e-001
+6.666667e-001
(+6.666667e-001+1.200000e+000i)
+6.666667e-001
+1.200000e+000
(+6.666667e-001-2.000000e+000i)
+6.666667e-001
-2.000000e+000
(+2.000000e+000+1.000000e+000i)
(+2.000000e+000-2.000000e+000i)
(+6.666667e-001-2.000000e+000i)
(+6.666667e-001+1.200000e+000i)
+3
View File
@@ -29,6 +29,9 @@ func main() {
// print float64
println(3.14)
// print complex128
println(5+1.2345i)
// print interface
println(interface{}(nil))
+1
View File
@@ -16,6 +16,7 @@ a b c
123456789012
-123456789012
+3.140000e+000
(+5.000000e+000+1.234500e+000i)
(0:nil)
map[2]
true false