[#31647] [Backport #3666] Backport of r26311 (Bug #2587) — Luis Lavena <redmine@...>

Backport #3666: Backport of r26311 (Bug #2587)

13 messages 2010/08/07

[#31666] [Bug #3677] unable to run certain gem binaries' in windows 7 — Roger Pack <redmine@...>

Bug #3677: unable to run certain gem binaries' in windows 7

10 messages 2010/08/10

[#31676] [Backport #3680] Splatting calls to_ary instead of to_a in some cases — Tomas Matousek <redmine@...>

Backport #3680: Splatting calls to_ary instead of to_a in some cases

10 messages 2010/08/11

[#31681] [Bug #3683] getgrnam on computer with NIS group (+)? — Rocky Bernstein <redmine@...>

Bug #3683: getgrnam on computer with NIS group (+)?

13 messages 2010/08/11

[#31843] Garbage Collection Question — Asher <asher@...>

This question is no doubt a function of my own lack of understanding, but I think that asking it will at least help some other folks see what's going on with the internals during garbage collection.

17 messages 2010/08/25
[#31861] Re: Garbage Collection Question — Roger Pack <rogerdpack2@...> 2010/08/26

> The question in short: when an object goes out of scope and has no

[#31862] Re: Garbage Collection Question — Asher <asher@...> 2010/08/26

Right - so how does a pointer ever get off the stack?

[#31873] Re: Garbage Collection Question — Kurt Stephens <ks@...> 2010/08/27

On 8/26/10 11:51 AM, Asher wrote:

[#31894] Re: Garbage Collection Question — Asher <asher@...> 2010/08/27

I very much appreciate the response, and this is helpful in describing the narrative, but it's still a few steps behind my question - but it may very well have clarified some points that help us get there.

[#31896] Re: Garbage Collection Question — Evan Phoenix <evan@...> 2010/08/27

You have introduced something called a "root node" without defining it. What do you mean by this?

[#31885] Avoiding $LOAD_PATH pollution — Eric Hodel <drbrain@...7.net>

Last year Nobu asked me to propose an API for adding an object to

21 messages 2010/08/27

[#31947] not use system for default encoding — Roger Pack <rogerdpack2@...>

It strikes me as a bit "scary" to use system locale settings to

19 messages 2010/08/30

[#31971] Change Ruby's License to BSDL + Ruby's dual license — "NARUSE, Yui" <naruse@...>

Ruby's License will change to BSDL + Ruby's dual license

16 messages 2010/08/31

[ruby-core:31912] [Ruby 1.9-Feature#3755][Open] Patch for Complex.cis

From: Run Paint Run Run <redmine@...>
Date: 2010-08-28 19:31:19 UTC
List: ruby-core #31912
Feature #3755: Patch for Complex.cis
http://redmine.ruby-lang.org/issues/show/3755

Author: Run Paint Run Run
Status: Open, Priority: Low
Category: core

Haskell and Common Lisp have a `cis` function for Complex numbers, e.g. http://www.zvon.org/other/haskell/Outputcomplex/cis_f.html and http://www.lispworks.com/documentation/HyperSpec/Body/f_cis.htm . This na誰ve patch adds the same to MRI.


----------------------------------------
http://redmine.ruby-lang.org

Attachments (1)

complex-cis.patch (1.63 KB, text/x-diff)
diff --git a/complex.c b/complex.c
index 4bc3005..aa87164 100644
--- a/complex.c
+++ b/complex.c
@@ -597,6 +597,38 @@ nucomp_s_polar(int argc, VALUE *argv, VALUE klass)
 
 /*
  * call-seq:
+ *    Complex.cis(radians) ->  complex
+ *
+ * Given an angle in radians, returns a Complex object whose real part is equal
+ * to the angle's cosine, and whose imaginary part is equal to the angle's
+ * sine. If the angle is itself a Complex number of the form a+bi, the result
+ * has a real part of <tt>Math.exp(-b) * Math.cos(a)</tt>, and an imaginary
+ * part of <tt>Math.exp(-b) * Math.sin(a)</tt>. A TypeError is raised unless
+ * the angle is a Numeric.
+ */
+static VALUE
+nucomp_s_cis(VALUE klass, VALUE radians)
+{
+    VALUE a, b;
+    if (!k_numeric_p(radians)) {
+	rb_raise(rb_eTypeError, "wrong argument type %s (expected Numeric)",
+		 rb_obj_classname(radians));
+    }
+    
+    if (k_complex_p(radians)) {
+	get_dat1(radians);
+	a = f_mul(m_exp_bang(f_negate(dat->imag)), m_cos(dat->real));
+	b = f_mul(m_exp_bang(f_negate(dat->imag)), m_sin(dat->real));
+    }
+    else {
+	a = m_cos(radians);
+	b = m_sin(radians);
+    }
+    return f_complex_new_bang2(rb_cComplex, a, b);
+}
+ 
+/*
+ * call-seq:
  *    cmp.real  ->  real
  *
  * Returns the real part.
@@ -1858,6 +1890,7 @@ Init_Complex(void)
     rb_define_singleton_method(rb_cComplex, "rectangular", nucomp_s_new, -1);
     rb_define_singleton_method(rb_cComplex, "rect", nucomp_s_new, -1);
     rb_define_singleton_method(rb_cComplex, "polar", nucomp_s_polar, -1);
+    rb_define_singleton_method(rb_cComplex, "cis", nucomp_s_cis, 1);
 
     rb_define_global_function("Complex", nucomp_f_complex, -1);
 

In This Thread

Prev Next