ndwt 0.1.0

High-performance discrete and lifting wavelet transforms for 1-D and N-D signals, with SIMD acceleration, adjoint operations, and 8 boundary conditions.
Documentation
pub use crate::bior::*;
use ndwt_macros::implement_lifting_scheme;

implement_lifting_scheme! {
    Bior1_3,
    UpdateD(0, [-1.0]),
    UpdateS(-1, [-0.0625, 0.5, 0.0625]),
    Scale(1.41421356237309504880168872420969807856967187537694807317668)
}

implement_lifting_scheme! {
    Bior1_5,
    UpdateD(0, [-1.0]),
    UpdateS(-2, [0.01171875, -0.0859375, 0.5, 0.0859375, -0.01171875]),
    Scale(1.41421356237309504880168872420969807856967187537694807317668)
}

implement_lifting_scheme! {
    Bior2_2,
    UpdateD(0, [-0.5, -0.5]),
    UpdateS(-1, [0.25, 0.25]),
    Scale(1.41421356237309504880168872420969807856967187537694807317668)
}

implement_lifting_scheme! {
    Bior2_4,
    UpdateD(0, [-0.5, -0.5]),
    UpdateS(-2, [-0.046875, 0.296875, 0.296875, -0.046875]),
    Scale(1.41421356237309504880168872420969807856967187537694807317668)
}

implement_lifting_scheme! {
    Bior2_6,
    UpdateD(0, [-0.5, -0.5]),
    UpdateS(-3, [0.009765625, -0.076171875, 0.31640625, 0.31640625, -0.076171875, 0.009765625]),
    Scale(1.41421356237309504880168872420969807856967187537694807317668)
}

implement_lifting_scheme! {
    Bior2_8,
    UpdateD(0, [-0.5, -0.5]),
    UpdateS(-4, [
        -0.00213623046875,
        0.02044677734375,
        -0.09539794921875,
        0.32708740234375,
        0.32708740234375,
        -0.09539794921875,
        0.02044677734375,
        -0.00213623046875,
    ]),
    Scale(1.41421356237309504880168872420969807856967187537694807317668)
}

implement_lifting_scheme! {
    Bior3_1,
    UpdateD(1, [-0.333333333333333333333333333333333333333333333333333333333333]),
    UpdateS(-1, [-0.375, 1.125]),
    Scale(0.942809041582063365867792482806465385713114583584632048784453)
}

implement_lifting_scheme! {
    Bior3_3,
    UpdateS(1, [-0.333333333333333333333333333333333333333333333333333333333333]),
    UpdateD(-1, [-0.375, -1.125]),
    UpdateS(-1, [
        -0.0833333333333333333333333333333333333333333333333333333333333,
        0.444444444444444444444444444444444444444444444444444444444444,
        0.0833333333333333333333333333333333333333333333333333333333333,
    ]),
    Scale(2.12132034355964257320253308631454711785450781306542210976502)
}

implement_lifting_scheme! {
    Bior3_5,
    UpdateS(1, [-0.333333333333333333333333333333333333333333333333333333333333]),
    UpdateD(-1, [-0.375, -1.125]),
    UpdateS(-2, [
        0.0173611111111111111111111111111111111111111111111111111111111,
        -0.118055555555555555555555555555555555555555555555555555555556,
        0.444444444444444444444444444444444444444444444444444444444444,
        0.118055555555555555555555555555555555555555555555555555555556,
        -0.0173611111111111111111111111111111111111111111111111111111111,
    ]),
    Scale(2.12132034355964257320253308631454711785450781306542210976502)
}

implement_lifting_scheme! {
    Bior3_7,
    UpdateS(1, [-0.333333333333333333333333333333333333333333333333333333333333]),
    UpdateD(-1, [-0.375, -1.125]),
    UpdateS(-3, [
        -0.00379774305555555555555555555555555555555555555555555555555556,
        0.0325520833333333333333333333333333333333333333333333333333333,
        -0.137044270833333333333333333333333333333333333333333333333333,
        0.444444444444444444444444444444444444444444444444444444444444,
        0.137044270833333333333333333333333333333333333333333333333333,
        -0.0325520833333333333333333333333333333333333333333333333333333,
        0.00379774305555555555555555555555555555555555555555555555555556
    ]),
    Scale(2.12132034355964257320253308631454711785450781306542210976502)
}
implement_lifting_scheme! {
    Bior3_9,
    UpdateS(1, [-0.333333333333333333333333333333333333333333333333333333333333]),
    UpdateD(-1, [-0.375, -1.125]),
    UpdateS(-4, [
        0.0008544921875,
        -0.00892469618055555555555555555555555555555555555555555555555556,
        0.0445149739583333333333333333333333333333333333333333333333333,
        -0.149007161458333333333333333333333333333333333333333333333333,
        0.444444444444444444444444444444444444444444444444444444444444,
        0.149007161458333333333333333333333333333333333333333333333333,
        -0.0445149739583333333333333333333333333333333333333333333333333,
        0.00892469618055555555555555555555555555555555555555555555555556,
        -0.0008544921875,
    ]),
    Scale(2.12132034355964257320253308631454711785450781306542210976502)
}

implement_lifting_scheme! {
    Bior4_2,
    UpdateS(-1, [-0.25, -0.25]),
    UpdateD(0, [-1.0, -1.0]),
    UpdateS(-1, [0.1875, 0.1875]),
    Scale(2.82842712474619009760337744841939615713934375075389614635336)
}

implement_lifting_scheme! {
    Bior4_4,
    UpdateS(-1, [-0.25, -0.25]),
    UpdateD(0, [-1.0, -1.0]),
    UpdateS(-2, [
        -0.0390625,
        0.2265625,
        0.2265625,
        -0.0390625
    ]),
    Scale(2.82842712474619009760337744841939615713934375075389614635336)
}

implement_lifting_scheme! {
    Bior4_6,
    UpdateS(-1, [-0.25, -0.25]),
    UpdateD(0, [-1.0, -1.0]),
    UpdateS(-3, [
        0.008544921875,
        -0.064697265625,
        0.24365234375,
        0.24365234375,
        -0.064697265625,
        0.008544921875
    ]),
    Scale(2.82842712474619009760337744841939615713934375075389614635336)
}

implement_lifting_scheme! {
    Bior5_5,
    UpdateD(0, [-0.2]),
    UpdateS(0, [-0.208333333333333333333333333333333333333333333333333333333333, -0.625]),
    UpdateD(-1, [-0.9, -1.5]),
    UpdateS(-2, [
        0.0151909722222222222222222222222222222222222222222222222222222,
        -0.0998263888888888888888888888888888888888888888888888888888889,
        0.333333333333333333333333333333333333333333333333333333333333,
        0.0998263888888888888888888888888888888888888888888888888888889,
        -0.0151909722222222222222222222222222222222222222222222222222222,
    ]),
    Scale(4.24264068711928514640506617262909423570901562613084421953004)
}

implement_lifting_scheme! {
    Bior6_8,
    UpdateD(0, [-0.166666666666666666666666666666666666666666666666666666666667, 0.166666666666666666666666666666666666666666666666666666666667]),
    UpdateS(-1, [-0.5624, -0.5624]),
    UpdateD(0, [-1.33333333333333333333333333333333333333333333333333333333333, -1.33333333333333333333333333333333333333333333333333333333333]),
    UpdateS(-4, [
        -0.00176239013671874,
        0.01650238037109375,
        -0.07311248779296874,
        0.21462249755859375,
        0.21462249755859375,
        -0.07311248779296874,
        0.01650238037109375,
        -0.00176239013671874,
    ]),
    Scale(5.65685424949238019520675489683879231427868750150779229270672)
}

implement_lifting_scheme! {
    CDF5_3,
    UpdateS(-1, [0.5, 0.5]),
    UpdateD(0, [-0.25, -0.25]),
    Scale(0.707106781186547524400844362104849039284835937688474036588340)
}

implement_lifting_scheme! {
    CDF9_7,
    UpdateD(0, [-1.58613434205992355842831545133740131985598525529112656778527, -1.58613434205992355842831545133740131985598525529112656778527]),
    UpdateS(-1, [-0.0529801185729614146241295675034771089920773921055534971880099, -0.0529801185729614146241295675034771089920773921055534971880099]),
    UpdateD(0, [0.882911075530933295919790099002837930341944716149740640164429, 0.882911075530933295919790099002837930341944716149740640164429]),
    UpdateS(-1, [0.443506852043971152115604215168913719478036852964167569567164, 0.443506852043971152115604215168913719478036852964167569567164]),
    Scale(1.14960439886024115979507564219148965843436742907448991688182)
}