Module: FFTW3::FFI
- Defined in:
- lib/fftw3/ffi/quad.rb,
lib/fftw3/ffi/float.rb,
lib/fftw3/ffi/types.rb,
lib/fftw3/ffi/double.rb,
lib/fftw3/ffi/long_double.rb,
lib/fftw3/ffi/library_loader.rb,
lib/fftw3/ffi/binding_template.rb
Defined Under Namespace
Modules: BindingTemplate, Double, Float, LibraryLoader, LongDouble, Quad, Types
Constant Summary
collapse
- PRECISION_CONFIG =
{
double: { prefix: "fftw_", real_type: :double },
float: { prefix: "fftwf_", real_type: :float },
long_double: { prefix: "fftwl_", real_type: :long_double },
quad: { prefix: "fftwq_", real_type: :float128 }
}.freeze
Class Method Summary
collapse
Class Method Details
.module_for(precision) ⇒ Object
69
70
71
72
73
74
75
76
77
|
# File 'lib/fftw3/ffi/library_loader.rb', line 69
def self.module_for(precision)
case precision
when :double then Double
when :float then Float
when :long_double then LongDouble
when :quad then Quad
else raise FFTW3::Error::InvalidArgument, "Unknown precision: #{precision}"
end
end
|
.prefix_for(precision) ⇒ Object
79
80
81
|
# File 'lib/fftw3/ffi/library_loader.rb', line 79
def self.prefix_for(precision)
PRECISION_CONFIG.fetch(precision)[:prefix]
end
|
.string_constant(precision, name) ⇒ Object
83
84
85
86
87
88
|
# File 'lib/fftw3/ffi/library_loader.rb', line 83
def self.string_constant(precision, name)
symbol = "#{prefix_for(precision)}#{name}"
LibraryLoader.open(precision).find_variable(symbol).read_string
rescue FFTW3::Error::LibraryNotFound, LoadError, RuntimeError
nil
end
|