Ruby 2.7.0p0(2019-12-25revision647ee6f091eafcce70ffb75ddf7e121e192ab217)

Macros | Functions | Variables
complex.c File Reference
`#include "ruby/config.h"`
`#include <math.h>`
`#include "internal.h"`
`#include "id.h"`
`#include "ruby_assert.h"`
`#include <ctype.h>`

Go to the source code of this file.

## Macros
#define | NDEBUG
#define | ZERO INT2FIX(0)
#define | ONE INT2FIX(1)
#define | TWO INT2FIX(2)
#define | RFLOAT_0 DBL2NUM(0)
#define | id_to_i idTo_i
#define | id_to_r idTo_r
#define | id_negate idUMinus
#define | id_expt idPow
#define | id_to_f idTo_f
#define | id_quo idQuo
#define | id_fdiv idFdiv
#define | f_boolcast(x) ((x) ? Qtrue : Qfalse)
#define | fun1(n)
#define | fun2(n)
#define | PRESERVE_SIGNEDZERO
#define | f_positive_p(x) (!f_negative_p(x))
#define | f_nonzero_p(x) (!f_zero_p(x))
#define | k_exact_p(x) (!RB_FLOAT_TYPE_P(x))
#define | k_exact_zero_p(x) (k_exact_p(x) && f_zero_p(x))
#define | get_dat1(x) struct RComplex *dat = RCOMPLEX(x)
#define | get_dat2(x, y) struct RComplex *adat = RCOMPLEX(x), *bdat = RCOMPLEX(y)
#define | canonicalization 0
#define | imp1(n)
#define | rb_raise_zerodiv() rb_raise(rb_eZeroDivError, "divided by 0")
#define | nucomp_quo rb_complex_div
#define | FINITE_TYPE_P(v) (RB_INTEGER_TYPE_P(v) || RB_TYPE_P(v, T_RATIONAL))
#define | rb_intern(str) rb_intern_const(str)

## Functions
| fun1 (to_r)
| fun2 (expt)
VALUE | rb_flo_is_finite_p (VALUE num)
VALUE | rb_flo_is_infinite_p (VALUE num)
| imp1 (cos)
| imp1 (sin)
VALUE | rb_dbl_complex_new_polar_pi (double abs, double ang)
VALUE | rb_complex_real (VALUE self)
VALUE | rb_complex_imag (VALUE self)
VALUE | rb_complex_uminus (VALUE self)
VALUE | rb_complex_plus (VALUE self, VALUE other)
VALUE | rb_complex_minus (VALUE self, VALUE other)
VALUE | rb_complex_mul (VALUE self, VALUE other)
VALUE | rb_complex_div (VALUE self, VALUE other)
VALUE | rb_complex_pow (VALUE self, VALUE other)
VALUE | rb_complex_abs (VALUE self)
VALUE | rb_complex_arg (VALUE self)
VALUE | rb_complex_conjugate (VALUE self)
VALUE | rb_complex_raw (VALUE x, VALUE y)
VALUE | rb_complex_new (VALUE x, VALUE y)
VALUE | rb_complex_new_polar (VALUE x, VALUE y)
VALUE | rb_complex_polar (VALUE x, VALUE y)
VALUE | rb_Complex (VALUE x, VALUE y)
VALUE | rb_dbl_complex_new (double real, double imag)
| Creates a Complex object. More...
void | Init_Complex (void)

## Variables
VALUE | rb_cComplex

## Macro Definition Documentation

## ◆ canonicalization

#define canonicalization 0

Definition at line 430 of file complex.c.

## ◆ f_boolcast

#define f_boolcast | ( |  | x | ) | ((x) ? Qtrue : Qfalse)

Definition at line 48 of file complex.c.

## ◆ f_nonzero_p

#define f_nonzero_p | ( |  | x | ) | (!f_zero_p(x))

Definition at line 332 of file complex.c.

## ◆ f_positive_p

#define f_positive_p | ( |  | x | ) | (!f_negative_p(x))

Definition at line 314 of file complex.c.

## ◆ FINITE_TYPE_P

#define FINITE_TYPE_P | ( |  | v | ) | (RB_INTEGER_TYPE_P(v) || RB_TYPE_P(v, T_RATIONAL))

Definition at line 1431 of file complex.c.

## ◆ fun1

#define fun1 | ( |  | n | ) |

Value:
inline static VALUE \
f_##n(VALUE x)\
{\
return rb_funcall(x, id_##n, 0);\
}

Definition at line 50 of file complex.c.

## ◆ fun2

#define fun2 | ( |  | n | ) |

Value:
inline static VALUE \
f_##n(VALUE x, VALUE y)\
{\
return rb_funcall(x, id_##n, 1, y);\
}

Definition at line 57 of file complex.c.

## ◆ get_dat1

#define get_dat1 | ( |  | x | ) | struct RComplex *dat = RCOMPLEX(x)

Definition at line 382 of file complex.c.

## ◆ get_dat2

#define get_dat2 | ( |  | x,
|  |  | y
| ) |  | struct RComplex *adat = RCOMPLEX(x), *bdat = RCOMPLEX(y)

Definition at line 385 of file complex.c.

## ◆ id_expt

#define id_expt idPow

Definition at line 43 of file complex.c.

## ◆ id_fdiv

#define id_fdiv idFdiv

Definition at line 46 of file complex.c.

## ◆ id_negate

#define id_negate idUMinus

Definition at line 42 of file complex.c.

## ◆ id_quo

#define id_quo idQuo

Definition at line 45 of file complex.c.

## ◆ id_to_f

#define id_to_f idTo_f

Definition at line 44 of file complex.c.

## ◆ id_to_i

#define id_to_i idTo_i

Definition at line 40 of file complex.c.

## ◆ id_to_r

#define id_to_r idTo_r

Definition at line 41 of file complex.c.

## ◆ imp1

#define imp1 | ( |  | n | ) |

Value:
inline static VALUE \
m_##n##_bang(VALUE x)\
{\
return rb_math_##n(x);\
}

Definition at line 572 of file complex.c.

## ◆ k_exact_p

#define k_exact_p | ( |  | x | ) | (!RB_FLOAT_TYPE_P(x))

Definition at line 378 of file complex.c.

## ◆ k_exact_zero_p

#define k_exact_zero_p | ( |  | x | ) | (k_exact_p(x) && f_zero_p(x))

Definition at line 380 of file complex.c.

## ◆ NDEBUG

#define NDEBUG

Definition at line 17 of file complex.c.

## ◆ nucomp_quo

#define nucomp_quo rb_complex_div

Definition at line 953 of file complex.c.

## ◆ ONE

#define ONE INT2FIX(1)

Definition at line 21 of file complex.c.

## ◆ PRESERVE_SIGNEDZERO

#define PRESERVE_SIGNEDZERO

Definition at line 64 of file complex.c.

## ◆ rb_intern

#define rb_intern | ( |  | str | ) | rb_intern_const(str)

## ◆ rb_raise_zerodiv

#define rb_raise_zerodiv | ( |  | ) | rb_raise(rb_eZeroDivError, "divided by 0")

Definition at line 932 of file complex.c.

## ◆ RFLOAT_0

#define RFLOAT_0 DBL2NUM(0)

Definition at line 24 of file complex.c.

## ◆ TWO

#define TWO INT2FIX(2)

Definition at line 22 of file complex.c.

## ◆ ZERO

#define ZERO INT2FIX(0)

Definition at line 20 of file complex.c.

## Function Documentation

## ◆ fun1()

fun1 | ( | to_r |  | ) |

Definition at line 274 of file complex.c.

## ◆ fun2()

fun2 | ( | expt |  | ) |

Definition at line 286 of file complex.c.

References id_quo, rb_float_div(), RB_FLOAT_TYPE_P, rb_funcallv, RB_INTEGER_TYPE_P, rb_numeric_quo(), RB_TYPE_P, and T_RATIONAL.

## ◆ imp1() [1/2]

imp1 | ( | cos |  | ) |

Definition at line 579 of file complex.c.

References rb_math_log().

## ◆ imp1() [2/2]

imp1 | ( | sin |  | ) |

Definition at line 589 of file complex.c.

References get_dat1, RB_TYPE_P, and T_COMPLEX.

## ◆ Init_Complex()

void Init_Complex | ( | void |  | ) |

Definition at line 2309 of file complex.c.

## ◆ rb_Complex()

VALUE rb_Complex | ( | VALUE | x,
|  | VALUE | y
| ) |  |

Definition at line 1545 of file complex.c.

## ◆ rb_complex_abs()

VALUE rb_complex_abs | ( | VALUE | self | ) |

Definition at line 1161 of file complex.c.

References get_dat1.

## ◆ rb_complex_arg()

VALUE rb_complex_arg | ( | VALUE | self | ) |

Definition at line 1208 of file complex.c.

References get_dat1, and rb_math_atan2().

## ◆ rb_complex_conjugate()

VALUE rb_complex_conjugate | ( | VALUE | self | ) |

Definition at line 1254 of file complex.c.

References get_dat1.

## ◆ rb_complex_div()

VALUE rb_complex_div | ( | VALUE | self,
|  | VALUE | other
| ) |  |

Definition at line 948 of file complex.c.

Referenced by rb_numeric_quo().

## ◆ rb_complex_imag()

VALUE rb_complex_imag | ( | VALUE | self | ) |

Definition at line 743 of file complex.c.

References get_dat1.

## ◆ rb_complex_minus()

VALUE rb_complex_minus | ( | VALUE | self,
|  | VALUE | other
| ) |  |

Definition at line 812 of file complex.c.

References get_dat2, RB_TYPE_P, and T_COMPLEX.

## ◆ rb_complex_mul()

VALUE rb_complex_mul | ( | VALUE | self,
|  | VALUE | other
| ) |  |

Definition at line 872 of file complex.c.

References get_dat2, RB_TYPE_P, and T_COMPLEX.

## ◆ rb_complex_new()

VALUE rb_complex_new | ( | VALUE | x,
|  | VALUE | y
| ) |  |

Definition at line 1527 of file complex.c.

Referenced by rb_dbl_complex_new_polar_pi().

## ◆ rb_complex_new_polar()

VALUE rb_complex_new_polar | ( | VALUE | x,
|  | VALUE | y
| ) |  |

Definition at line 1533 of file complex.c.

Referenced by rb_complex_polar().

## ◆ rb_complex_plus()

VALUE rb_complex_plus | ( | VALUE | self,
|  | VALUE | other
| ) |  |

Definition at line 778 of file complex.c.

References get_dat2, RB_TYPE_P, and T_COMPLEX.

## ◆ rb_complex_polar()

VALUE rb_complex_polar | ( | VALUE | x,
|  | VALUE | y
| ) |  |

Definition at line 1539 of file complex.c.

References rb_complex_new_polar().

## ◆ rb_complex_pow()

VALUE rb_complex_pow | ( | VALUE | self,
|  | VALUE | other
| ) |  |

Definition at line 985 of file complex.c.

Referenced by rb_num_pow().

## ◆ rb_complex_raw()

VALUE rb_complex_raw | ( | VALUE | x,
|  | VALUE | y
| ) |  |

Definition at line 1521 of file complex.c.

Referenced by rb_dbl_complex_new().

## ◆ rb_complex_real()

VALUE rb_complex_real | ( | VALUE | self | ) |

Definition at line 726 of file complex.c.

References get_dat1.

## ◆ rb_complex_uminus()

VALUE rb_complex_uminus | ( | VALUE | self | ) |

Definition at line 758 of file complex.c.

References get_dat1.

## ◆ rb_dbl_complex_new()

VALUE rb_dbl_complex_new | ( | double | real,
|  | double | imag
| ) |  |

Creates a Complex object.

Parameters

  real | real part value
  imag | imaginary part value

Returns
  a new Complex object

Definition at line 1561 of file complex.c.

References DBL2NUM, and rb_complex_raw().

## ◆ rb_dbl_complex_new_polar_pi()

VALUE rb_dbl_complex_new_polar_pi | ( | double | abs,
|  | double | ang
| ) |  |

Definition at line 667 of file complex.c.

References abs(), cos(), DBL2NUM, M_PI, modf(), rb_complex_new(), RFLOAT_0, and sin().

Referenced by rb_big_pow(), and rb_float_pow().

## ◆ rb_flo_is_finite_p()

VALUE rb_flo_is_finite_p | ( | VALUE | num | ) |

Definition at line 1770 of file numeric.c.

References isfinite, isinf, isnan, Qfalse, Qtrue, and RFLOAT_VALUE.

## ◆ rb_flo_is_infinite_p()

VALUE rb_flo_is_infinite_p | ( | VALUE | num | ) |

Definition at line 1750 of file numeric.c.

References INT2FIX, isinf, Qnil, and RFLOAT_VALUE.

## Variable Documentation

## ◆ rb_cComplex

VALUE rb_cComplex

Definition at line 33 of file complex.c.

VALUE
unsigned long VALUE
Definition: ruby.h:102
n
const char size_t n
Definition: rb_mjit_min_header-2.7.0.h:5456
rb_funcall
#define rb_funcall(recv, mid, argc,...)
Definition: rb_mjit_min_header-2.7.0.h:6585