;;; math.el --- Math stuffs -*- lexical-binding: t -*- ;; Author: William Carroll <wpcarro@gmail.com> ;; Version: 0.0.1 ;; Package-Requires: ((emacs "24.3")) ;; Homepage: https://user.git.corp.google.com/wpcarro/briefcase ;;; Commentary: ;; Containing some useful mathematical functions. ;;; Code: ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Dependencies ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (require 'maybe) (require 'cl-lib) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Constants ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defconst math-pi pi "The number pi.") ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Functions ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; TODO: Support all three arguments. ;; Int -> Int -> Int -> Boolean (cl-defun math-triangle-of-power (&key base power result) (cond ((maybe-somes? base power result) (error "All three arguments should not be set")) ((maybe-somes? power result) (message "power and result")) ((maybe-somes? base result) (log result base)) ((maybe-somes? base power) (expt base power)) (t (error "Two of the three arguments must be set")))) (defun math-mod (x y) "Return X mod Y." (mod x y)) (defun math-exp (x y) "Return X raised to the Y." (expt x y)) (defun math-round (x) "Round X to nearest ones digit." (round x)) (defun math-floor (x) "Floor value X." (floor x)) (provide 'math) ;;; math.el ends here