`
yangdong
  • 浏览: 65193 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

求对数

阅读更多
下面是求以 1.12 为底,2.7 的对数。本方法极其低效,仅仅标记一下以备以后参考。
(ns t
  (:require [clojure.contrib.generic.math-functions :as math]))

(defn abs [x]
  (if (< x 0) (* -1 x) x))

(defn close-enough? [delta]
  #(< (abs (- %1 %2)) delta))
  
(defn calc-log [lg lg-level acc-stack]
  (let [acc (math/pow 1.12 lg)
        close? (close-enough? 0.00000000000000000001M)
        lg-inc (/ 1 (math/pow 10 lg-level))
        finer-lg-inc (/ 1 (math/pow 10 (inc lg-level)))]
    (if (close? acc 2.7)
      lg
      (if (> acc 2.7)
        (recur (+ (- lg lg-inc) finer-lg-inc) (inc lg-level) acc-stack)
        (recur (+ lg lg-inc) lg-level (conj acc-stack acc))))))
      
(println (calc-log 1 0 []))
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics