Project

gnu_mpc

0.0
No commit activity in last 3 years
No release in over 3 years
gnu_mpc - providing Ruby bindings to the MPC library.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
 Dependencies

Runtime

>= 0.5.47
 Project Readme

GNU MPC

This gem provides Ruby bindings to the GNU MPC library.

Methods

"Initialization" Methods

MPC.new(7)      # (7,0)
MPC.new(7, 32)  # (7,0) with precision 32
MPC#prec        # precision if real and imag precisions are the same, 0 otherwise
MPC#prec2       # real and imaginary precisions, as a 2-element Array
MPC#prec=       # set precision
MPC#set_prec(precision, rounding_mode) # set precision

Projection and Decomposing Methods

MPC#real   # real part
MPC#imag   # imaginary part
MPC#arg    # argument
MPC#proj   # projection

Basic Arithmetic Methods

MPC#add(w)    # add with w
MPC#sub(w)    # difference with w
MPC#mul(w)    # multiply with w
MPC#div(w)    # divide by w
MPC#fma(w,x)  # multiple by w, then add with x

Power and Logarithm Methods

MPC#sqrt      # square root
MPC#pow(w)    # raise to the power w
MPC#** w      # raise to the power w
MPC#exp       # exponential
MPC#log       # natural logarithm
MPC#log10     # base-10 logarithm

Trigonometric Methods

The GNU MPC gem provides bindings to the following functions from MPC:

MPC#sin    # sine
MPC#cos    # cosine
MPC#tan    # tangent
MPC#sinh   # hyperbolic sine
MPC#cosh   # hyperbolic cosine
MPC#tanh   # hyperbolic tangent
MPC#asin   # inverse sine
MPC#acos   # inverse cosine
MPC#atan   # inverse tangent

Miscellaneous Functions

GMP::RandState#mpc_urandom  # uniformly distributed random complex number within
                            # [0,1] x [0,1]

...

Each of these methods accepts optional arguments to specify the rounding mode, and precision, in the following fashions:

z = MPC.new(0, 1)
z.sin()                                    # default rounding mode; precision of the receiver is
                                           # applied to the return value
z.sin(MPC::MPC_RNDZZ)                      # MPC_RNDZZ rounding mode; precision of the receiver
                                           # is applied to the return value
z.sin(MPC::MPC_RNDNN, 64)                  # MPC_RNDNN rounding mode; precision of both real and
                                           # imaginary parts of return value is 64
z.sin(MPC::MPC_RNDNN, 64, 128)             # MPC_RNDNN rounding mode; precision
                                           # of real part of return value is 64,
                                           # imaginary part is 128
z.sin(:rounding => MPC::MPC_RNDZZ)         # MPC_RNDZZ rounding mode; precision
                                           # of the receiver is applied to the
                                           # return value
z.sin(:prec => 64)                         # default rounding mode; precision of
                                           # both real and imaginary parts of
                                           # return value is 64
z.sin(:pre_real => 64, :prec_imag => 128)  # default rounding mode; precision of
                                           # real part of return value is 64,
                                           # imaginary part is 128

Either the ordered list of arguments, or the options Hash may be passed; they cannot be mixed.

Manual

There is also a PDF manual in addition to this readme.