Hide keyboard shortcuts

Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

1c"""source-before-namespace 

2#include <cmath> 

3""" 

4 

5PI: f64 = 3.14159265358979323846 

6 

7E: f64 = 2.71828182845904523536 

8 

9func sin(angle: f64) -> f64: 

10 """Returns the trigonometric sine of given angle in radians. 

11 

12 """ 

13 

14 value: f64 = 0.0 

15 

16 c"value = std::sin(angle);" 

17 

18 return value 

19 

20func cos(angle: f64) -> f64: 

21 """Returns the trigonometric cosine of given angle in radians. 

22 

23 """ 

24 

25 value: f64 = 0.0 

26 

27 c"value = std::cos(angle);" 

28 

29 return value 

30 

31func tan(value: f64) -> f64: 

32 return sin(value) / cos(value) 

33 

34func is_nan(value: f64) -> bool: 

35 """Returns true if given value is not a number. 

36 

37 """ 

38 

39 result: bool = False 

40 

41 c"value = std::isnan(value);" 

42 

43 return result 

44 

45func sqrt(value: f64) -> f64: 

46 """Returns the square root of given number. 

47 

48 """ 

49 

50 c"value = std::sqrt(value);" 

51 

52 return value 

53 

54func sqrt(value: f32) -> f32: 

55 """Returns the square root of given number. 

56 

57 """ 

58 

59 c"value = std::sqrt(value);" 

60 

61 return value 

62 

63@generic(T) 

64func abs(value: T) -> T: 

65 if value < 0: 

66 value *= -1 

67 

68 return value 

69 

70@generic(T) 

71func div_ceil(numerator: T, denominator: T) -> T: 

72 return (numerator + (denominator - 1)) / denominator 

73 

74test sin(): 

75 assert sin(0.0) == 0.0 

76 

77test cos(): 

78 assert cos(0.0) == 1.0 

79 

80test tan(): 

81 assert tan(0.0) == 0.0 

82 assert tan(PI / 4.0) > 0.99 

83 assert tan(PI / 4.0) < 1.01 

84 

85test pi(): 

86 assert PI > 3.14 

87 assert PI < 3.15 

88 

89test e(): 

90 assert E > 2.71 

91 assert E < 2.72 

92 

93test nan(): 

94 assert not is_nan(1.0) 

95 

96test abs(): 

97 assert abs(-1) == 1 

98 assert abs(1) == 1 

99 assert abs(-10.0) == 10.0 

100 assert abs(10.0) == 10.0 

101 

102test div_ceil(): 

103 assert div_ceil[i64](3, 3) == 1 

104 assert div_ceil[i64](4, 3) == 2 

105 assert div_ceil[i64](5, 3) == 2 

106 assert div_ceil[i64](6, 3) == 2 

107 assert div_ceil[i64](7, 3) == 3 

108 

109 assert div_ceil[i64](5, 1) == 5 

110 

111test sqrt(): 

112 assert sqrt(f64(4.0)) == 2.0 

113 assert sqrt(f64(16.0)) == 4.0 

114 assert sqrt(f64(144.0)) == 12.0 

115 assert sqrt(f32(4.0)) == 2.0 

116 assert sqrt(f32(16.0)) == 4.0 

117 assert sqrt(f32(144.0)) == 12.0