Skip to content

Instantly share code, notes, and snippets.

@w01fe
w01fe / java_dot_product.java
Created July 10, 2013 06:50
java_dot_product.java
// 8.5 us for 10k doubles: 2.3 GFlops
public double dotProduct(double [] ws, double[] xs) {
double result = 0.0;
for (int i=0; i < ws.length; ++i) {
result += ws[i] * xs[i];
}
return result;
}
@w01fe
w01fe / hiphip_dot_product.clj
Created July 10, 2013 06:52
hiphip_dot_product.clj
;; 8.5 us for 10k doubles: 2.3 GFlops
(require '[hiphip.double :as dbl])
(defn dot-product [ws xs]
(dbl/asum [x xs w ws] (* x w)))
@w01fe
w01fe / hiphip_aget.clj
Created July 10, 2013 06:52
hiphip_aget.clj
(dbl/aset xs i (* 2.0 (dbl/aget xs (inc i)))))
@w01fe
w01fe / hiphip_add_in_place.clj
Last active December 19, 2015 13:40
hiphip_add_in_place.clj
(defn add-in-place!
"Modify xs, incrementing each element by the corresponding element of ys"
[xs ys]
(dbl/afill! [x xs y ys] (+ x y)))
(defn pointwise-product
"Produce a new double array with the product of corresponding elements of xs and ys"
[xs ys]
(dbl/amap [x xs y ys] (* x y)))
@w01fe
w01fe / hiphip_pointwise_product.clj
Last active December 19, 2015 13:40
hiphip_pointwise_product.clj
(defn pointwise-product
"Produce a new double array with the product of corresponding elements of xs and ys"
[xs ys]
(dbl/amap [x xs y ys] (* x y)))
@w01fe
w01fe / hiphip_mathy_ops.clj
Created July 10, 2013 06:57
hiphip_mathy_ops.clj
(defn standard-deviation [xs]
(let [mean (dbl/amean xs)
mean-sq (/ (dbl/asum [x xs] (* x x))
(dbl/alength xs))]
(Math/sqrt (- mean-sq (* mean mean)))))
(= 1 (dbl/amax-index (double-array [1.0 3.0 2.0])))
(defn max-normalize [xs]
(let [m (dbl/amax xs)]
@w01fe
w01fe / top_k.clj
Created July 10, 2013 06:58
top_k.clj
(defn top-k
"Return the top k elements of xs according to score-fn"
[k score-fn xs]
(let [n (count xs)
scores (dbl/amake [i n] (score-fn (nth xs i)))
^ints idxs (dbl/amax-indices scores k)]
(seq (hiphip.array/amake Object [i k] (nth xs (aget idxs (- n i 1)))))))
@w01fe
w01fe / fill_string_pointwise_product.clj
Created July 10, 2013 06:59
fill_string_pointwise_product.clj
(defn fill-string-pointwise-product
[^{:tag "[Ljava.lang.String;"} os ^doubles xs ^longs ys]
(array/afill! String [_ os x xs y ys] (str (* x y))))
@w01fe
w01fe / slow_afill.clj
Created July 10, 2013 06:59
slow_afill.clj
;; Initialize xs to (range (alength xs)).
(afill! [[i x] xs] i)
@w01fe
w01fe / clear_leiningen_jvm_opts.clj
Created July 10, 2013 07:00
clear_leiningen_jvm_opts.clj
;; Clear Leiningen's default jvm-opts.
:jvm-opts ^:replace []