class FFT_COMPLEX_64_I

(source code)

description

Common interface to local proxy interface and remote server class for calculating fourier transformations

descendants

FFT_COMPLEX_64_I*
    EL_IMMUTABLE_STRING_TABLE* [GENERAL -> STRING_GENERAL create make end, IMMUTABLE ->FFT_COMPLEX_64_PROXY
    EL_IMMUTABLE_STRING_TABLE* [GENERAL -> STRING_GENERAL create make end, IMMUTABLE ->FFT_COMPLEX_64
note
	description: "[
		Common interface to local proxy interface and remote server class for calculating fourier transformations
	]"
	descendants: "[
			FFT_COMPLEX_64_I*
				${FFT_COMPLEX_64_PROXY}
				${FFT_COMPLEX_64}
	]"

	author: "Finnian Reilly"
	copyright: "Copyright (c) 2001-2022 Finnian Reilly"
	contact: "finnian at eiffel hyphen loop dot com"

	license: "MIT license (See: en.wikipedia.org/wiki/MIT_License)"
	date: "2024-01-20 19:18:27 GMT (Saturday 20th January 2024)"
	revision: "12"

deferred class
	FFT_COMPLEX_64_I

inherit
	FFT_ONCE_ROUTINE_NAMES

feature -- Initialization

	fft_make (n: INTEGER)
			--
		deferred
		end

feature -- Access

	input: COLUMN_VECTOR_COMPLEX_64
			--
		deferred
		end

	output: COLUMN_VECTOR_COMPLEX_64
			--
		deferred
		end

	length: INTEGER
			--
		deferred
		end

	windower_rectangular: RECTANGULAR_WINDOWER_DOUBLE
			--
		deferred
		end

	windower_default: DEFAULT_WINDOWER_DOUBLE
			--
		deferred
		end

feature -- Basic operations

	do_transform
				--
		deferred
		end

	do_inverse_transform
	   		--
		deferred
		end

feature -- Element change

	set_input (a_input: VECTOR_COMPLEX_64)
			--
		deferred
		end

	 set_windower (a_windower: WINDOWER_DOUBLE)
			--
		deferred
		end

feature -- Contract support

	is_output_length_valid: BOOLEAN
			--
		deferred
		end

	is_valid_input_length (a_length: INTEGER): BOOLEAN
			--
		deferred
		end

	is_power_of_two (n: INTEGER): BOOLEAN
			--
		deferred
		end

feature {NONE} -- EROS implementation

	routines: ARRAY [TUPLE [STRING, ROUTINE]]
			--
		do
			Result := <<
				-- Procedures
				[R_do_transform,					agent do_transform],
				[R_do_inverse_transform,		agent do_inverse_transform],

				[R_fft_make,						agent fft_make],
				[R_set_input,						agent set_input],
				[R_set_windower,					agent set_windower],

				-- Functions
				[R_output,							agent: COLUMN_VECTOR_COMPLEX_64 do Result := output end],
				[R_input,							agent: COLUMN_VECTOR_COMPLEX_64 do Result := input end],
				[R_length,							agent: INTEGER do Result := length end],

				[R_is_output_length_valid,		agent is_output_length_valid],
				[R_is_valid_input_length,		agent is_valid_input_length],
				[R_is_power_of_two,				agent is_power_of_two],

				[R_windower_rectangular,		agent Windower_rectangular],
				[R_windower_default,				agent Windower_default]
			>>
		end

feature {NONE} -- Routine names

	R_fft_make: STRING = "fft_make"

	R_do_transform: STRING = "do_transform"

	R_do_inverse_transform: STRING = "do_inverse_transform"

	R_input: STRING = "input"

	R_output: STRING = "output"

	R_length: STRING = "length"

	R_set_input: STRING = "set_input"

	R_set_windower: STRING = "set_windower"

	R_is_output_length_valid: STRING = "is_output_length_valid"

	R_is_valid_input_length: STRING = "is_valid_input_length"

	R_is_power_of_two: STRING = "is_power_of_two"

end