This is what I suspected. Of course, this is not just for abs, but really for any mathematical operation. Sqrt, Trig operations etc.
I will study the Ratio type more closely, but note that something like (Math/abs (/ 22 7)) does not work. On Monday, April 27, 2015 at 12:45:32 PM UTC-4, Gary Verhaegen wrote: > > As far as I understand, your example with Math/abs would need to be part > of Java. > > You cannot extend the arithmetic operators in Java, and you will not be > able to extend static Java methods like Math/abs. > > What you may be able to do is make your custom type play nice with Clojure > operators, like Clojure's rationals and bignums. > > I'd suggest looking at the code for these, and considering a Java class > with two primitive attributes rather than a Clojure vector or map (which > have a big overhead compared to a simple number). Depending on what you > want to do, you may also want to consider implementing a "vector of > complex" type, which could be a single object with two primitive arrays. > > If you're targeting a performant implementation, you should probably cross > post to numerical-clojure; people over there have a lot of experience about > numerical optimizations in Clojure. > > On Monday, 27 April 2015, endbegin <nkri...@gmail.com <javascript:>> > wrote: > >> I have been thinking along the lines of mikera and Maik - and it seems >> like there is no further progress here? I would like to take a crack at >> creating a complex number type, but implemented as a library to Clojure. I >> am not sure where to start, and if anyone here has suggestions, I'd be >> happy to hear them. >> >> A complex number could simply be a vector of two elements, or a map with >> :real and :imag keys (or something lightweight) - and I am not sure what it >> would require to make this type work happily with code arithmetic functions >> in Clojure and Java Math. >> >> It would also have to work with seq operations in Clojure - for instance: >> If I have a complex number c = {:real 3 :imag 4}, and a vector v = [1 -2 >> c], it would be nice to have the call 'map #(Math/abs %) v' produce (1 2 >> 5). >> >> I am having trouble figuring out all the pieces that need to be >> implemented. Is it even possible to implement this as a library, or does >> this need to be a part of clojure.core? >> >> -- >> You received this message because you are subscribed to the Google >> Groups "Clojure" group. >> To post to this group, send email to clojure@googlegroups.com >> Note that posts from new members are moderated - please be patient with >> your first post. >> To unsubscribe from this group, send email to >> clojure+unsubscr...@googlegroups.com >> For more options, visit this group at >> http://groups.google.com/group/clojure?hl=en >> --- >> You received this message because you are subscribed to the Google Groups >> "Clojure" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to clojure+unsubscr...@googlegroups.com. >> For more options, visit https://groups.google.com/d/optout. >> > -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.