Data update
This commit is contained in:
parent
5150844a7d
commit
4bb20c9b71
7735 changed files with 38060 additions and 199180 deletions
|
|
@ -1,7 +0,0 @@
|
|||
with Ada.Numerics.Generic_Complex_Arrays;
|
||||
|
||||
generic
|
||||
with package Complex_Arrays is
|
||||
new Ada.Numerics.Generic_Complex_Arrays (<>);
|
||||
use Complex_Arrays;
|
||||
function Generic_FFT (X : Complex_Vector) return Complex_Vector;
|
||||
|
|
@ -1,39 +0,0 @@
|
|||
with Ada.Numerics;
|
||||
with Ada.Numerics.Generic_Complex_Elementary_Functions;
|
||||
|
||||
function Generic_FFT (X : Complex_Vector) return Complex_Vector is
|
||||
|
||||
package Complex_Elementary_Functions is
|
||||
new Ada.Numerics.Generic_Complex_Elementary_Functions
|
||||
(Complex_Arrays.Complex_Types);
|
||||
|
||||
use Ada.Numerics;
|
||||
use Complex_Elementary_Functions;
|
||||
use Complex_Arrays.Complex_Types;
|
||||
|
||||
function FFT (X : Complex_Vector; N, S : Positive)
|
||||
return Complex_Vector is
|
||||
begin
|
||||
if N = 1 then
|
||||
return (1..1 => X (X'First));
|
||||
else
|
||||
declare
|
||||
F : constant Complex := exp (Pi * j / Real_Arrays.Real (N/2));
|
||||
Even : Complex_Vector := FFT (X, N/2, 2*S);
|
||||
Odd : Complex_Vector := FFT (X (X'First + S..X'Last), N/2, 2*S);
|
||||
begin
|
||||
for K in 0..N/2 - 1 loop
|
||||
declare
|
||||
T : constant Complex := Odd (Odd'First + K) / F ** K;
|
||||
begin
|
||||
Odd (Odd'First + K) := Even (Even'First + K) - T;
|
||||
Even (Even'First + K) := Even (Even'First + K) + T;
|
||||
end;
|
||||
end loop;
|
||||
return Even & Odd;
|
||||
end;
|
||||
end if;
|
||||
end FFT;
|
||||
begin
|
||||
return FFT (X, X'Length, 1);
|
||||
end Generic_FFT;
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
with Ada.Numerics.Complex_Arrays; use Ada.Numerics.Complex_Arrays;
|
||||
with Ada.Complex_Text_IO; use Ada.Complex_Text_IO;
|
||||
with Ada.Text_IO; use Ada.Text_IO;
|
||||
|
||||
with Ada.Numerics.Complex_Elementary_Functions;
|
||||
with Generic_FFT;
|
||||
|
||||
procedure Example is
|
||||
function FFT is new Generic_FFT (Ada.Numerics.Complex_Arrays);
|
||||
X : Complex_Vector := (1..4 => (1.0, 0.0), 5..8 => (0.0, 0.0));
|
||||
Y : Complex_Vector := FFT (X);
|
||||
begin
|
||||
Put_Line (" X FFT X ");
|
||||
for I in Y'Range loop
|
||||
Put (X (I - Y'First + X'First), Aft => 3, Exp => 0);
|
||||
Put (" ");
|
||||
Put (Y (I), Aft => 3, Exp => 0);
|
||||
New_Line;
|
||||
end loop;
|
||||
end;
|
||||
|
|
@ -1,32 +0,0 @@
|
|||
Function FFT($Arr){
|
||||
$Len = $Arr.Count
|
||||
|
||||
If($Len -le 1){Return $Arr}
|
||||
|
||||
$Len_Over_2 = [Math]::Floor(($Len/2))
|
||||
|
||||
$Output = New-Object System.Numerics.Complex[] $Len
|
||||
|
||||
$EvenArr = @()
|
||||
$OddArr = @()
|
||||
|
||||
For($i = 0; $i -lt $Len; $i++){
|
||||
If($i % 2){
|
||||
$OddArr+=$Arr[$i]
|
||||
}Else{
|
||||
$EvenArr+=$Arr[$i]
|
||||
}
|
||||
}
|
||||
|
||||
$Even = FFT($EvenArr)
|
||||
$Odd = FFT($OddArr)
|
||||
|
||||
For($i = 0; $i -lt $Len_Over_2; $i++){
|
||||
$Twiddle = [System.Numerics.Complex]::Exp([System.Numerics.Complex]::ImaginaryOne*[Math]::Pi*($i*-2/$Len))*$Odd[$i]
|
||||
|
||||
$Output[$i] = $Even[$i] + $Twiddle
|
||||
$Output[$i+$Len_Over_2] = $Even[$i] - $Twiddle
|
||||
}
|
||||
|
||||
Return $Output
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue