Login
7 branches 0 tags
Ben (Win10) "Fixed" day12 segfault 84f445f 3 years ago 583 Commits
nujel / stdlib / math / math.nuj
; Nujel - Copyright (C) 2020-2021 - Benjamin Vincent Schulenburg
; This project uses the MIT license, a copy should be included under /LICENSE

[def PI 3.141592653589793]
[def π  3.141592653589793]

[defmacro ++ [i]
          "Increment I by 1 and store the result in I"
          `[set! ~i [+ 1 ~i]]]

[defmacro -- [i]
          "Decrement I by 1 and store the result in I"
          `[set! ~i [+ -1 ~i]]]

[defn +x [α]
      "Return a function that adds α to it's argument, useful for mapping"
      [fn [β]
          [+ α β]]]

[defn >> [val amount]
       "Shifts VAL by AMOUNT bits to the right"
       [ash val [- amount]]]

[defn fib [i]
           "Terribly inefficient, but, useful for testing the GC"
           [if [< i 2] i
               [+ [fib [- i 2]] [fib [- i 1]]]]]

[defn wrap-value [val min max] "Constrains VAL to be within MIN and MAX, wrapping it around"
        [+ min [% [- val min] [- max min]]]]

[defmacro +1 [v]
          `[+ 1 ~v]]

[defn radians [degrees]
  "Convert a quantity in degrees to radians"
  [/ [* π degrees] 180.0]]