@testset "fourier_diff" begin
    @test fourier_diff(5, order=1) ≈ [0.0 0.8506508083520398 -0.5257311121191336 0.5257311121191336 -0.8506508083520399; -0.8506508083520399 0.0 0.8506508083520398 -0.5257311121191336 0.5257311121191336; 0.5257311121191336 -0.8506508083520399 0.0 0.8506508083520398 -0.5257311121191336; -0.5257311121191336 0.5257311121191336 -0.8506508083520399 0.0 0.8506508083520398; 0.8506508083520398 -0.5257311121191336 0.5257311121191336 -0.8506508083520399 0.0]
    @test fourier_diff(6, order=1) ≈ [0.0 0.8660254037844387 -0.2886751345948127 -3.061616997868383e-17 0.288675134594813 -0.8660254037844387; -0.8660254037844387 0.0 0.8660254037844387 -0.2886751345948127 -3.061616997868383e-17 0.288675134594813; 0.288675134594813 -0.8660254037844387 0.0 0.8660254037844387 -0.2886751345948127 -3.061616997868383e-17; -3.061616997868383e-17 0.288675134594813 -0.8660254037844387 0.0 0.8660254037844387 -0.2886751345948127; -0.2886751345948127 -3.061616997868383e-17 0.288675134594813 -0.8660254037844387 0.0 0.8660254037844387; 0.8660254037844387 -0.2886751345948127 -3.061616997868383e-17 0.288675134594813 -0.8660254037844387 0.0]
    @test fourier_diff(BigFloat, 5, order=1) ≈ [BigFloat("0.0") BigFloat("0.850650808352039932181540497063011072240401403764816881836740242377884047363955") BigFloat("-0.5257311121191336060256690848478766072854979322433417815289355232412111464032185") BigFloat("0.5257311121191336060256690848478766072854979322433417815289355232412111464032185") BigFloat("-0.8506508083520399321815404970630110722404014037648168818367402423778840473639636"); BigFloat("-0.8506508083520399321815404970630110722404014037648168818367402423778840473639636") BigFloat("0.0") BigFloat("0.850650808352039932181540497063011072240401403764816881836740242377884047363955") BigFloat("-0.5257311121191336060256690848478766072854979322433417815289355232412111464032185") BigFloat("0.5257311121191336060256690848478766072854979322433417815289355232412111464032185"); BigFloat("0.5257311121191336060256690848478766072854979322433417815289355232412111464032185") BigFloat("-0.8506508083520399321815404970630110722404014037648168818367402423778840473639636") BigFloat("0.0") BigFloat("0.850650808352039932181540497063011072240401403764816881836740242377884047363955") BigFloat("-0.5257311121191336060256690848478766072854979322433417815289355232412111464032185"); BigFloat("-0.5257311121191336060256690848478766072854979322433417815289355232412111464032185") BigFloat("0.5257311121191336060256690848478766072854979322433417815289355232412111464032185") BigFloat("-0.8506508083520399321815404970630110722404014037648168818367402423778840473639636") BigFloat("0.0") BigFloat("0.850650808352039932181540497063011072240401403764816881836740242377884047363955"); BigFloat("0.850650808352039932181540497063011072240401403764816881836740242377884047363955") BigFloat("-0.5257311121191336060256690848478766072854979322433417815289355232412111464032185") BigFloat("0.5257311121191336060256690848478766072854979322433417815289355232412111464032185") BigFloat("-0.8506508083520399321815404970630110722404014037648168818367402423778840473639636") BigFloat("0.0")]
    @test fourier_diff(BigFloat, 6, order=1) ≈ [BigFloat("0.0") BigFloat("0.8660254037844386467637231707529361834714026269051903140279034897259665084543383") BigFloat("-0.2886751345948128822545743902509787278238008756350634380093011632419888361514749") BigFloat("-2.742293602448380191855326565989245052626895591271719877947514292480356721283385e-78") BigFloat("0.2886751345948128822545743902509787278238008756350634380093011632419888361514619") BigFloat("-0.8660254037844386467637231707529361834714026269051903140279034897259665084543902"); BigFloat("-0.8660254037844386467637231707529361834714026269051903140279034897259665084543902") BigFloat("0.0") BigFloat("0.8660254037844386467637231707529361834714026269051903140279034897259665084543383") BigFloat("-0.2886751345948128822545743902509787278238008756350634380093011632419888361514749") BigFloat("-2.742293602448380191855326565989245052626895591271719877947514292480356721283385e-78") BigFloat("0.2886751345948128822545743902509787278238008756350634380093011632419888361514619"); BigFloat("0.2886751345948128822545743902509787278238008756350634380093011632419888361514619") BigFloat("-0.8660254037844386467637231707529361834714026269051903140279034897259665084543902") BigFloat("0.0") BigFloat("0.8660254037844386467637231707529361834714026269051903140279034897259665084543383") BigFloat("-0.2886751345948128822545743902509787278238008756350634380093011632419888361514749") BigFloat("-2.742293602448380191855326565989245052626895591271719877947514292480356721283385e-78"); BigFloat("-2.742293602448380191855326565989245052626895591271719877947514292480356721283385e-78") BigFloat("0.2886751345948128822545743902509787278238008756350634380093011632419888361514619") BigFloat("-0.8660254037844386467637231707529361834714026269051903140279034897259665084543902") BigFloat("0.0") BigFloat("0.8660254037844386467637231707529361834714026269051903140279034897259665084543383") BigFloat("-0.2886751345948128822545743902509787278238008756350634380093011632419888361514749"); BigFloat("-0.2886751345948128822545743902509787278238008756350634380093011632419888361514749") BigFloat("-2.742293602448380191855326565989245052626895591271719877947514292480356721283385e-78") BigFloat("0.2886751345948128822545743902509787278238008756350634380093011632419888361514619") BigFloat("-0.8660254037844386467637231707529361834714026269051903140279034897259665084543902") BigFloat("0.0") BigFloat("0.8660254037844386467637231707529361834714026269051903140279034897259665084543383"); BigFloat("0.8660254037844386467637231707529361834714026269051903140279034897259665084543383") BigFloat("-0.2886751345948128822545743902509787278238008756350634380093011632419888361514749") BigFloat("-2.742293602448380191855326565989245052626895591271719877947514292480356721283385e-78") BigFloat("0.2886751345948128822545743902509787278238008756350634380093011632419888361514619") BigFloat("-0.8660254037844386467637231707529361834714026269051903140279034897259665084543902") BigFloat("0.0")]

    @test fourier_diff(5, order=2) ≈ [-2.0 1.1708203932499366 -0.1708203932499369 -0.17082039324993695 1.170820393249937; 1.170820393249937 -2.0 1.1708203932499366 -0.1708203932499369 -0.17082039324993695; -0.17082039324993695 1.170820393249937 -2.0 1.1708203932499366 -0.1708203932499369; -0.1708203932499369 -0.17082039324993695 1.170820393249937 -2.0 1.1708203932499366; 1.1708203932499366 -0.1708203932499369 -0.17082039324993695 1.170820393249937 -2.0]
    @test fourier_diff(6, order=2) ≈ [-3.1666666666666665 2.000000000000001 -0.6666666666666666 0.5 -0.6666666666666669 2.000000000000001; 2.000000000000001 -3.1666666666666665 2.000000000000001 -0.6666666666666666 0.5 -0.6666666666666669; -0.6666666666666669 2.000000000000001 -3.1666666666666665 2.000000000000001 -0.6666666666666666 0.5; 0.5 -0.6666666666666669 2.000000000000001 -3.1666666666666665 2.000000000000001 -0.6666666666666666; -0.6666666666666666 0.5 -0.6666666666666669 2.000000000000001 -3.1666666666666665 2.000000000000001; 2.000000000000001 -0.6666666666666666 0.5 -0.6666666666666669 2.000000000000001 -3.1666666666666665]
    @test fourier_diff(BigFloat, 5, order=2) ≈ [BigFloat("-1.999999999999999999999999999999999999999999999999999999999999999999999999999983") BigFloat("1.170820393249936908922752100619382870632185507883457717281269173623156277691329") BigFloat("-0.170820393249936908922752100619382870632185507883457717281269173623156277691348") BigFloat("-0.1708203932499369089227521006193828706321855078834577172812691736231562776913437") BigFloat("1.170820393249936908922752100619382870632185507883457717281269173623156277691346"); BigFloat("1.170820393249936908922752100619382870632185507883457717281269173623156277691346") BigFloat("-1.999999999999999999999999999999999999999999999999999999999999999999999999999983") BigFloat("1.170820393249936908922752100619382870632185507883457717281269173623156277691329") BigFloat("-0.170820393249936908922752100619382870632185507883457717281269173623156277691348") BigFloat("-0.1708203932499369089227521006193828706321855078834577172812691736231562776913437"); BigFloat("-0.1708203932499369089227521006193828706321855078834577172812691736231562776913437") BigFloat("1.170820393249936908922752100619382870632185507883457717281269173623156277691346") BigFloat("-1.999999999999999999999999999999999999999999999999999999999999999999999999999983") BigFloat("1.170820393249936908922752100619382870632185507883457717281269173623156277691329") BigFloat("-0.170820393249936908922752100619382870632185507883457717281269173623156277691348"); BigFloat("-0.170820393249936908922752100619382870632185507883457717281269173623156277691348") BigFloat("-0.1708203932499369089227521006193828706321855078834577172812691736231562776913437") BigFloat("1.170820393249936908922752100619382870632185507883457717281269173623156277691346") BigFloat("-1.999999999999999999999999999999999999999999999999999999999999999999999999999983") BigFloat("1.170820393249936908922752100619382870632185507883457717281269173623156277691329"); BigFloat("1.170820393249936908922752100619382870632185507883457717281269173623156277691329") BigFloat("-0.170820393249936908922752100619382870632185507883457717281269173623156277691348") BigFloat("-0.1708203932499369089227521006193828706321855078834577172812691736231562776913437") BigFloat("1.170820393249936908922752100619382870632185507883457717281269173623156277691346") BigFloat("-1.999999999999999999999999999999999999999999999999999999999999999999999999999983")]
    @test fourier_diff(BigFloat, 6, order=2) ≈ [BigFloat("-3.166666666666666666666666666666666666666666666666666666666666666666666666666678") BigFloat("1.999999999999999999999999999999999999999999999999999999999999999999999999999793") BigFloat("-0.6666666666666666666666666666666666666666666666666666666666666666666666666666868") BigFloat("0.50") BigFloat("-0.6666666666666666666666666666666666666666666666666666666666666666666666666666609") BigFloat("1.999999999999999999999999999999999999999999999999999999999999999999999999999965"); BigFloat("1.999999999999999999999999999999999999999999999999999999999999999999999999999965") BigFloat("-3.166666666666666666666666666666666666666666666666666666666666666666666666666678") BigFloat("1.999999999999999999999999999999999999999999999999999999999999999999999999999793") BigFloat("-0.6666666666666666666666666666666666666666666666666666666666666666666666666666868") BigFloat("0.50") BigFloat("-0.6666666666666666666666666666666666666666666666666666666666666666666666666666609"); BigFloat("-0.6666666666666666666666666666666666666666666666666666666666666666666666666666609") BigFloat("1.999999999999999999999999999999999999999999999999999999999999999999999999999965") BigFloat("-3.166666666666666666666666666666666666666666666666666666666666666666666666666678") BigFloat("1.999999999999999999999999999999999999999999999999999999999999999999999999999793") BigFloat("-0.6666666666666666666666666666666666666666666666666666666666666666666666666666868") BigFloat("0.50"); BigFloat("0.50") BigFloat("-0.6666666666666666666666666666666666666666666666666666666666666666666666666666609") BigFloat("1.999999999999999999999999999999999999999999999999999999999999999999999999999965") BigFloat("-3.166666666666666666666666666666666666666666666666666666666666666666666666666678") BigFloat("1.999999999999999999999999999999999999999999999999999999999999999999999999999793") BigFloat("-0.6666666666666666666666666666666666666666666666666666666666666666666666666666868"); BigFloat("-0.6666666666666666666666666666666666666666666666666666666666666666666666666666868") BigFloat("0.50") BigFloat("-0.6666666666666666666666666666666666666666666666666666666666666666666666666666609") BigFloat("1.999999999999999999999999999999999999999999999999999999999999999999999999999965") BigFloat("-3.166666666666666666666666666666666666666666666666666666666666666666666666666678") BigFloat("1.999999999999999999999999999999999999999999999999999999999999999999999999999793"); BigFloat("1.999999999999999999999999999999999999999999999999999999999999999999999999999793") BigFloat("-0.6666666666666666666666666666666666666666666666666666666666666666666666666666868") BigFloat("0.50") BigFloat("-0.6666666666666666666666666666666666666666666666666666666666666666666666666666609") BigFloat("1.999999999999999999999999999999999999999999999999999999999999999999999999999965") BigFloat("-3.166666666666666666666666666666666666666666666666666666666666666666666666666678")]

    @test fourier_diff(5) == fourier_diff(5, order=1)
end
