text:
@testset "minimal.powRev1_test" begin

    @test pow_rev1(emptyinterval(), emptyinterval(), emptyinterval()) === emptyinterval()

    @test pow_rev1(emptyinterval(), entireinterval(), emptyinterval()) === emptyinterval()

    @test pow_rev1(entireinterval(), emptyinterval(), emptyinterval()) === emptyinterval()

    @test pow_rev1(entireinterval(), entireinterval(), emptyinterval()) === emptyinterval()

    @test pow_rev1(emptyinterval(), emptyinterval(), entireinterval()) === emptyinterval()

    @test pow_rev1(emptyinterval(), entireinterval(), entireinterval()) === emptyinterval()

    @test pow_rev1(entireinterval(), emptyinterval(), entireinterval()) === emptyinterval()

    @test pow_rev1(entireinterval(), entireinterval(), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(entireinterval(), entireinterval(), interval(-Inf,-1.0)) === emptyinterval()

    @test_broken pow_rev1(interval(-Inf,-1.0), entireinterval(), interval(-Inf,0.0)) === emptyinterval()

    @test_broken pow_rev1(interval(-Inf,0.0), entireinterval(), interval(-Inf,0.0)) === emptyinterval()

    @test pow_rev1(interval(-Inf,0.0), interval(-Inf,0.0), entireinterval()) === emptyinterval()

    @test_broken pow_rev1(interval(-Inf,0.0), interval(-Inf,0.9), interval(0.0,1.0)) === emptyinterval()

    @test_broken pow_rev1(interval(-Inf,0.0), interval(1.1,Inf), interval(1.0,Inf)) === emptyinterval()

    @test_broken pow_rev1(interval(0.0,Inf), interval(1.1,Inf), interval(0.0,1.0)) === emptyinterval()

    @test_broken pow_rev1(interval(0.0,Inf), interval(-Inf,0.9), interval(1.0,Inf)) === emptyinterval()

    @test pow_rev1(interval(0.0,0.0), interval(1.0,1.0), interval(-Inf,0.0)) === emptyinterval()

    @test pow_rev1(entireinterval(), interval(0.0,0.0), entireinterval()) === Interval(0.0,0.0)

    @test pow_rev1(entireinterval(), interval(-Inf,0.0), entireinterval()) === Interval(0.0,0.0)

    @test pow_rev1(interval(0.0,Inf), interval(-Inf,0.0), entireinterval()) === Interval(0.0,0.0)

    @test pow_rev1(interval(0.0,Inf), interval(0.0,0.0), entireinterval()) === Interval(0.0,0.0)

    @test pow_rev1(interval(1.0,2.0), interval(0.0,0.0), entireinterval()) === Interval(0.0,0.0)

    @test pow_rev1(interval(1.0,1.0), interval(0.0,0.0), interval(0.0,0.0)) === Interval(0.0,0.0)

    @test pow_rev1(entireinterval(), interval(1.0,1.0), interval(1.0,1.0)) === Interval(1.0,1.0)

    @test_broken pow_rev1(interval(0.0,0.0), interval(1.0,1.0), entireinterval()) === Interval(0.0,Inf)

    @test_broken pow_rev1(interval(0.0,0.0), interval(1.0,1.0), interval(2.0,3.0)) === Interval(2.0,3.0)

    @test_broken pow_rev1(entireinterval(), interval(1.0,1.0), entireinterval()) === Interval(0.0,Inf)

    @test_broken pow_rev1(entireinterval(), interval(1.0,1.0), interval(20.0,30.0)) === Interval(20.0,30.0)

    @test_broken pow_rev1(interval(0.0,0.0), interval(1.0,1.0), interval(1.0,1.0)) === Interval(1.0,1.0)

    @test pow_rev1(interval(-4.0,-2.0), interval(0.0,0.5), entireinterval()) === Interval(0x1.306FE0A31B715p0, Inf)

    @test pow_rev1(interval(-Inf,-2.0), interval(0.0,0.5), entireinterval()) === Interval(1.0, Inf)

    @test pow_rev1(interval(-4.0,-2.0), interval(-Inf,0.5), entireinterval()) === Interval(0x1.306FE0A31B715p0, Inf)

    @test pow_rev1(interval(-Inf,-2.0), interval(-Inf,0.5), entireinterval()) === Interval(1.0, Inf)

    @test pow_rev1(interval(-4.0,-2.0), interval(0.25,0.5), entireinterval()) === Interval(0x1.306FE0A31B715p0, 2.0)

    @test pow_rev1(interval(-Inf,-2.0), interval(0.25,0.5), entireinterval()) === Interval(1.0, 2.0)

    @test pow_rev1(interval(-4.0,-2.0), interval(0.25,1.0), entireinterval()) === Interval(1.0, 2.0)

    @test pow_rev1(interval(-Inf,-2.0), interval(0.25,1.0), entireinterval()) === Interval(1.0, 2.0)

    @test pow_rev1(interval(-4.0,-2.0), interval(1.0,1.0), entireinterval()) === Interval(1.0, 1.0)

    @test pow_rev1(interval(-Inf,-2.0), interval(1.0,1.0), entireinterval()) === Interval(1.0, 1.0)

    @test pow_rev1(interval(-4.0,-2.0), interval(0.0,1.0), entireinterval()) === Interval(1.0, Inf)

    @test pow_rev1(interval(-Inf,-2.0), interval(0.0,1.0), entireinterval()) === Interval(1.0, Inf)

    @test pow_rev1(interval(-4.0,-2.0), interval(0.0,2.0), entireinterval()) === Interval(0x1.6A09E667F3BCCp-1, Inf)

    @test pow_rev1(interval(-Inf,-2.0), interval(0.0,2.0), entireinterval()) === Interval(0x1.6A09E667F3BCCp-1, Inf)

    @test pow_rev1(interval(-4.0,-2.0), interval(0.0,Inf), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(interval(-Inf,-2.0), interval(0.0,Inf), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(interval(-4.0,-2.0), interval(-Inf,2.0), entireinterval()) === Interval(0x1.6A09E667F3BCCp-1, Inf)

    @test pow_rev1(interval(-Inf,-2.0), interval(-Inf,2.0), entireinterval()) === Interval(0x1.6A09E667F3BCCp-1, Inf)

    @test pow_rev1(interval(-4.0,-2.0), interval(-Inf,Inf), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(interval(-Inf,-2.0), interval(-Inf,Inf), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(interval(-4.0,-2.0), interval(0.5,2.0), entireinterval()) === Interval(0x1.6A09E667F3BCCp-1, 0x1.6A09E667F3BCDp0)

    @test pow_rev1(interval(-Inf,-2.0), interval(0.5,2.0), entireinterval()) === Interval(0x1.6A09E667F3BCCp-1, 0x1.6A09E667F3BCDp0)

    @test pow_rev1(interval(-4.0,-2.0), interval(0.5,Inf), entireinterval()) === Interval(0.0, 0x1.6A09E667F3BCDp0)

    @test pow_rev1(interval(-Inf,-2.0), interval(0.5,Inf), entireinterval()) === Interval(0.0, 0x1.6A09E667F3BCDp0)

    @test pow_rev1(interval(-4.0,-2.0), interval(1.0,2.0), entireinterval()) === Interval(0x1.6A09E667F3BCCp-1, 1.0)

    @test pow_rev1(interval(-Inf,-2.0), interval(1.0,2.0), entireinterval()) === Interval(0x1.6A09E667F3BCCp-1, 1.0)

    @test pow_rev1(interval(-4.0,-2.0), interval(1.0,Inf), entireinterval()) === Interval(0.0, 1.0)

    @test pow_rev1(interval(-Inf,-2.0), interval(1.0,Inf), entireinterval()) === Interval(0.0, 1.0)

    @test pow_rev1(interval(-4.0,-2.0), interval(2.0,4.0), entireinterval()) === Interval(0.5, 0x1.AE89F995AD3AEp-1)

    @test pow_rev1(interval(-Inf,-2.0), interval(2.0,4.0), entireinterval()) === Interval(0.5, 1.0)

    @test pow_rev1(interval(-4.0,-2.0), interval(2.0,Inf), entireinterval()) === Interval(0.0, 0x1.AE89F995AD3AEp-1)

    @test pow_rev1(interval(-Inf,-2.0), interval(2.0,Inf), entireinterval()) === Interval(0.0, 1.0)

    @test pow_rev1(interval(0.0,0.0), interval(0.0,0.5), entireinterval()) === emptyinterval()

    @test pow_rev1(interval(0.0,0.0), interval(-Inf,0.5), entireinterval()) === emptyinterval()

    @test pow_rev1(interval(0.0,0.0), interval(0.25,0.5), entireinterval()) === emptyinterval()

    @test_broken pow_rev1(interval(0.0,0.0), interval(0.25,1.0), entireinterval()) === Interval(0.0, Inf)

    @test_broken pow_rev1(interval(0.0,0.0), interval(1.0,1.0), entireinterval()) === Interval(0.0, Inf)

    @test_broken pow_rev1(interval(0.0,0.0), interval(0.0,1.0), entireinterval()) === Interval(0.0, Inf)

    @test_broken pow_rev1(interval(0.0,0.0), interval(0.0,2.0), entireinterval()) === Interval(0.0, Inf)

    @test_broken pow_rev1(interval(0.0,0.0), interval(0.0,Inf), entireinterval()) === Interval(0.0, Inf)

    @test_broken pow_rev1(interval(0.0,0.0), interval(-Inf,2.0), entireinterval()) === Interval(0.0, Inf)

    @test_broken pow_rev1(interval(0.0,0.0), interval(-Inf,Inf), entireinterval()) === Interval(0.0, Inf)

    @test_broken pow_rev1(interval(0.0,0.0), interval(0.5,2.0), entireinterval()) === Interval(0.0, Inf)

    @test_broken pow_rev1(interval(0.0,0.0), interval(0.5,Inf), entireinterval()) === Interval(0.0, Inf)

    @test_broken pow_rev1(interval(0.0,0.0), interval(1.0,2.0), entireinterval()) === Interval(0.0, Inf)

    @test_broken pow_rev1(interval(0.0,0.0), interval(1.0,Inf), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(interval(0.0,0.0), interval(2.0,4.0), entireinterval()) === emptyinterval()

    @test pow_rev1(interval(0.0,0.0), interval(2.0,Inf), entireinterval()) === emptyinterval()

    @test pow_rev1(interval(-4.0,0.0), interval(0.0,0.5), entireinterval()) === Interval(0x1.306FE0A31B715p0, Inf)

    @test pow_rev1(interval(-Inf,0.0), interval(0.0,0.5), entireinterval()) === Interval(1.0, Inf)

    @test pow_rev1(interval(-4.0,0.0), interval(-Inf,0.5), entireinterval()) === Interval(0x1.306FE0A31B715p0, Inf)

    @test pow_rev1(interval(-Inf,0.0), interval(-Inf,0.5), entireinterval()) === Interval(1.0, Inf)

    @test pow_rev1(interval(-4.0,0.0), interval(0.25,0.5), entireinterval()) === Interval(0x1.306FE0A31B715p0, Inf)

    @test pow_rev1(interval(-Inf,0.0), interval(0.25,0.5), entireinterval()) === Interval(1.0, Inf)

    @test_broken pow_rev1(interval(-4.0,0.0), interval(0.25,1.0), entireinterval()) === Interval(0.0, Inf)

    @test_broken pow_rev1(interval(-Inf,0.0), interval(0.25,1.0), entireinterval()) === Interval(0.0, Inf)

    @test_broken pow_rev1(interval(-4.0,0.0), interval(1.0,1.0), entireinterval()) === Interval(0.0, Inf)

    @test_broken pow_rev1(interval(-Inf,0.0), interval(1.0,1.0), entireinterval()) === Interval(0.0, Inf)

    @test_broken pow_rev1(interval(-4.0,0.0), interval(0.0,1.0), entireinterval()) === Interval(0.0, Inf)

    @test_broken pow_rev1(interval(-Inf,0.0), interval(0.0,1.0), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(interval(-4.0,0.0), interval(0.0,2.0), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(interval(-Inf,0.0), interval(0.0,2.0), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(interval(-4.0,0.0), interval(0.0,Inf), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(interval(-Inf,0.0), interval(0.0,Inf), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(interval(-4.0,0.0), interval(-Inf,2.0), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(interval(-Inf,0.0), interval(-Inf,2.0), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(interval(-4.0,0.0), interval(-Inf,Inf), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(interval(-Inf,0.0), interval(-Inf,Inf), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(interval(-4.0,0.0), interval(0.5,2.0), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(interval(-Inf,0.0), interval(0.5,2.0), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(interval(-4.0,0.0), interval(0.5,Inf), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(interval(-Inf,0.0), interval(0.5,Inf), entireinterval()) === Interval(0.0, Inf)

    @test_broken pow_rev1(interval(-4.0,0.0), interval(1.0,2.0), entireinterval()) === Interval(0.0, Inf)

    @test_broken pow_rev1(interval(-Inf,0.0), interval(1.0,2.0), entireinterval()) === Interval(0.0, Inf)

    @test_broken pow_rev1(interval(-4.0,0.0), interval(1.0,Inf), entireinterval()) === Interval(0.0, Inf)

    @test_broken pow_rev1(interval(-Inf,0.0), interval(1.0,Inf), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(interval(-4.0,0.0), interval(2.0,4.0), entireinterval()) === Interval(0.0, 0x1.AE89F995AD3AEp-1)

    @test pow_rev1(interval(-Inf,0.0), interval(2.0,4.0), entireinterval()) === Interval(0.0, 1.0)

    @test pow_rev1(interval(-4.0,0.0), interval(2.0,Inf), entireinterval()) === Interval(0.0, 0x1.AE89F995AD3AEp-1)

    @test pow_rev1(interval(-Inf,0.0), interval(2.0,Inf), entireinterval()) === Interval(0.0, 1.0)

    @test pow_rev1(interval(-4.0,4.0), interval(0.0,0.5), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(interval(-Inf,4.0), interval(0.0,0.5), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(interval(-4.0,4.0), interval(-Inf,0.5), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(interval(-Inf,4.0), interval(-Inf,0.5), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(interval(-4.0,Inf), interval(0.0,0.5), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(entireinterval(), interval(0.0,0.5), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(interval(-4.0,Inf), interval(-Inf,0.5), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(entireinterval(), interval(-Inf,0.5), entireinterval()) === Interval(0.0, Inf)

    @test_broken pow_rev1(interval(-4.0,4.0), interval(0.0,0.5), interval(0.0, 1.0)) === Interval(0.0, 0x1.AE89F995AD3AEp-1)

    @test_broken pow_rev1(interval(-Inf,4.0), interval(0.0,0.5), interval(0.0, 1.0)) === Interval(0.0, 0x1.AE89F995AD3AEp-1)

    @test_broken pow_rev1(interval(-4.0,4.0), interval(-Inf,0.5), interval(0.0, 1.0)) === Interval(0.0, 0x1.AE89F995AD3AEp-1)

    @test_broken pow_rev1(interval(-Inf,4.0), interval(-Inf,0.5), interval(0.0, 1.0)) === Interval(0.0, 0x1.AE89F995AD3AEp-1)

    @test pow_rev1(interval(-4.0,Inf), interval(0.0,0.5), interval(0.0, 1.0)) === Interval(0.0, 1.0)

    @test pow_rev1(entireinterval(), interval(0.0,0.5), interval(0.0, 1.0)) === Interval(0.0, 1.0)

    @test pow_rev1(interval(-4.0,Inf), interval(-Inf,0.5), interval(0.0, 1.0)) === Interval(0.0, 1.0)

    @test pow_rev1(entireinterval(), interval(-Inf,0.5), interval(0.0, 1.0)) === Interval(0.0, 1.0)

    @test_broken pow_rev1(interval(-4.0,4.0), interval(0.0,0.5), interval(1.0, Inf)) === Interval(0x1.306FE0A31B715p0, Inf)

    @test pow_rev1(interval(-Inf,4.0), interval(0.0,0.5), interval(1.0, Inf)) === Interval(1.0, Inf)

    @test_broken pow_rev1(interval(-4.0,4.0), interval(-Inf,0.5), interval(1.0, Inf)) === Interval(0x1.306FE0A31B715p0, Inf)

    @test pow_rev1(interval(-Inf,4.0), interval(-Inf,0.5), interval(1.0, Inf)) === Interval(1.0, Inf)

    @test_broken pow_rev1(interval(-4.0,Inf), interval(0.0,0.5), interval(1.0, Inf)) === Interval(0x1.306FE0A31B715p0, Inf)

    @test pow_rev1(entireinterval(), interval(0.0,0.5), interval(1.0, Inf)) === Interval(1.0, Inf)

    @test_broken pow_rev1(interval(-4.0,Inf), interval(-Inf,0.5), interval(1.0, Inf)) === Interval(0x1.306FE0A31B715p0, Inf)

    @test pow_rev1(entireinterval(), interval(-Inf,0.5), interval(1.0, Inf)) === Interval(1.0, Inf)

    @test pow_rev1(interval(-4.0,4.0), interval(0.25,0.5), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(interval(-Inf,4.0), interval(0.25,0.5), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(interval(-4.0,Inf), interval(0.25,0.5), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(entireinterval(), interval(0.25,0.5), entireinterval()) === Interval(0.0, Inf)

    @test_broken pow_rev1(interval(-4.0,4.0), interval(0.25,0.5), interval(0.0, 1.0)) === Interval(0.0, 0x1.AE89F995AD3AEp-1)

    @test_broken pow_rev1(interval(-Inf,4.0), interval(0.25,0.5), interval(0.0, 1.0)) === Interval(0.0, 0x1.AE89F995AD3AEp-1)

    @test pow_rev1(interval(-4.0,Inf), interval(0.25,0.5), interval(0.0, 1.0)) === Interval(0.0, 1.0)

    @test pow_rev1(entireinterval(), interval(0.25,0.5), interval(0.0, 1.0)) === Interval(0.0, 1.0)

    @test_broken pow_rev1(interval(-4.0,4.0), interval(0.25,0.5), interval(1.0, Inf)) === Interval(0x1.306FE0A31B715p0, Inf)

    @test pow_rev1(interval(-Inf,4.0), interval(0.25,0.5), interval(1.0, Inf)) === Interval(1.0, Inf)

    @test_broken pow_rev1(interval(-4.0,Inf), interval(0.25,0.5), interval(1.0, Inf)) === Interval(0x1.306FE0A31B715p0, Inf)

    @test pow_rev1(entireinterval(), interval(0.25,0.5), interval(1.0, Inf)) === Interval(1.0, Inf)

    @test pow_rev1(interval(-4.0,4.0), interval(0.25,1.0), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(interval(-Inf,4.0), interval(0.25,1.0), entireinterval()) === Interval(0.0, Inf)

    @test_broken pow_rev1(interval(-4.0,4.0), interval(1.0,1.0), entireinterval()) === Interval(0.0, Inf)

    @test_broken pow_rev1(interval(-Inf,4.0), interval(1.0,1.0), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(interval(-4.0,Inf), interval(0.25,1.0), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(entireinterval(), interval(0.25,1.0), entireinterval()) === Interval(0.0, Inf)

    @test_broken pow_rev1(interval(-4.0,Inf), interval(1.0,1.0), entireinterval()) === Interval(0.0, Inf)

    @test_broken pow_rev1(entireinterval(), interval(1.0,1.0), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(interval(-4.0,4.0), interval(0.25,1.0), interval(0.0, 1.0)) === Interval(0.0, 1.0)

    @test pow_rev1(interval(-Inf,4.0), interval(0.25,1.0), interval(0.0, 1.0)) === Interval(0.0, 1.0)

    @test_broken pow_rev1(interval(-4.0,4.0), interval(1.0,1.0), interval(0.0, 1.0)) === Interval(0.0, 1.0)

    @test_broken pow_rev1(interval(-Inf,4.0), interval(1.0,1.0), interval(0.0, 1.0)) === Interval(0.0, 1.0)

    @test pow_rev1(interval(-4.0,Inf), interval(0.25,1.0), interval(0.0, 1.0)) === Interval(0.0, 1.0)

    @test pow_rev1(entireinterval(), interval(0.25,1.0), interval(0.0, 1.0)) === Interval(0.0, 1.0)

    @test_broken pow_rev1(interval(-4.0,Inf), interval(1.0,1.0), interval(0.0, 1.0)) === Interval(0.0, 1.0)

    @test_broken pow_rev1(entireinterval(), interval(1.0,1.0), interval(0.0, 1.0)) === Interval(0.0, 1.0)

    @test pow_rev1(interval(-4.0,4.0), interval(0.25,1.0), interval(1.0, Inf)) === Interval(1.0, Inf)

    @test pow_rev1(interval(-Inf,4.0), interval(0.25,1.0), interval(1.0, Inf)) === Interval(1.0, Inf)

    @test_broken pow_rev1(interval(-4.0,4.0), interval(1.0,1.0), interval(1.0, Inf)) === Interval(1.0, Inf)

    @test_broken pow_rev1(interval(-Inf,4.0), interval(1.0,1.0), interval(1.0, Inf)) === Interval(1.0, Inf)

    @test pow_rev1(interval(-4.0,Inf), interval(0.25,1.0), interval(1.0, Inf)) === Interval(1.0, Inf)

    @test pow_rev1(entireinterval(), interval(0.25,1.0), interval(1.0, Inf)) === Interval(1.0, Inf)

    @test_broken pow_rev1(interval(-4.0,Inf), interval(1.0,1.0), interval(1.0, Inf)) === Interval(1.0, Inf)

    @test_broken pow_rev1(entireinterval(), interval(1.0,1.0), interval(1.0, Inf)) === Interval(1.0, Inf)

    @test pow_rev1(interval(-4.0,4.0), interval(0.0,1.0), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(interval(-Inf,4.0), interval(0.0,1.0), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(interval(-4.0,Inf), interval(0.0,1.0), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(entireinterval(), interval(0.0,1.0), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(interval(-4.0,4.0), interval(0.0,1.0), interval(0.0, 1.0)) === Interval(0.0, 1.0)

    @test pow_rev1(interval(-Inf,4.0), interval(0.0,1.0), interval(0.0, 1.0)) === Interval(0.0, 1.0)

    @test pow_rev1(interval(-4.0,Inf), interval(0.0,1.0), interval(0.0, 1.0)) === Interval(0.0, 1.0)

    @test pow_rev1(entireinterval(), interval(0.0,1.0), interval(0.0, 1.0)) === Interval(0.0, 1.0)

    @test pow_rev1(interval(-4.0,4.0), interval(0.0,1.0), interval(1.0, Inf)) === Interval(1.0, Inf)

    @test pow_rev1(interval(-Inf,4.0), interval(0.0,1.0), interval(1.0, Inf)) === Interval(1.0, Inf)

    @test pow_rev1(interval(-4.0,Inf), interval(0.0,1.0), interval(1.0, Inf)) === Interval(1.0, Inf)

    @test pow_rev1(entireinterval(), interval(0.0,1.0), interval(1.0, Inf)) === Interval(1.0, Inf)

    @test pow_rev1(interval(-4.0,4.0), interval(0.0,2.0), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(interval(-Inf,4.0), interval(0.0,2.0), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(interval(-4.0,4.0), interval(0.0,Inf), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(interval(-Inf,4.0), interval(0.0,Inf), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(interval(-4.0,4.0), interval(-Inf,2.0), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(interval(-Inf,4.0), interval(-Inf,2.0), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(interval(-4.0,4.0), interval(-Inf,Inf), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(interval(-Inf,4.0), interval(-Inf,Inf), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(interval(-4.0,Inf), interval(0.0,2.0), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(entireinterval(), interval(0.0,2.0), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(interval(-4.0,Inf), interval(0.0,Inf), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(entireinterval(), interval(0.0,Inf), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(interval(-4.0,Inf), interval(-Inf,2.0), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(entireinterval(), interval(-Inf,2.0), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(interval(-4.0,Inf), interval(-Inf,Inf), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(entireinterval(), interval(-Inf,Inf), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(interval(-4.0,4.0), interval(0.0,2.0), interval(0.0, 1.0)) === Interval(0.0, 1.0)

    @test pow_rev1(interval(-Inf,4.0), interval(0.0,2.0), interval(0.0, 1.0)) === Interval(0.0, 1.0)

    @test pow_rev1(interval(-4.0,4.0), interval(0.0,Inf), interval(0.0, 1.0)) === Interval(0.0, 1.0)

    @test pow_rev1(interval(-Inf,4.0), interval(0.0,Inf), interval(0.0, 1.0)) === Interval(0.0, 1.0)

    @test pow_rev1(interval(-4.0,4.0), interval(-Inf,2.0), interval(0.0, 1.0)) === Interval(0.0, 1.0)

    @test pow_rev1(interval(-Inf,4.0), interval(-Inf,2.0), interval(0.0, 1.0)) === Interval(0.0, 1.0)

    @test pow_rev1(interval(-4.0,4.0), interval(-Inf,Inf), interval(0.0, 1.0)) === Interval(0.0, 1.0)

    @test pow_rev1(interval(-Inf,4.0), interval(-Inf,Inf), interval(0.0, 1.0)) === Interval(0.0, 1.0)

    @test pow_rev1(interval(-4.0,Inf), interval(0.0,2.0), interval(0.0, 1.0)) === Interval(0.0, 1.0)

    @test pow_rev1(entireinterval(), interval(0.0,2.0), interval(0.0, 1.0)) === Interval(0.0, 1.0)

    @test pow_rev1(interval(-4.0,Inf), interval(0.0,Inf), interval(0.0, 1.0)) === Interval(0.0, 1.0)

    @test pow_rev1(entireinterval(), interval(0.0,Inf), interval(0.0, 1.0)) === Interval(0.0, 1.0)

    @test pow_rev1(interval(-4.0,Inf), interval(-Inf,2.0), interval(0.0, 1.0)) === Interval(0.0, 1.0)

    @test pow_rev1(entireinterval(), interval(-Inf,2.0), interval(0.0, 1.0)) === Interval(0.0, 1.0)

    @test pow_rev1(interval(-4.0,Inf), interval(-Inf,Inf), interval(0.0, 1.0)) === Interval(0.0, 1.0)

    @test pow_rev1(entireinterval(), interval(-Inf,Inf), interval(0.0, 1.0)) === Interval(0.0, 1.0)

    @test pow_rev1(interval(-4.0,4.0), interval(0.0,2.0), interval(1.0, Inf)) === Interval(1.0, Inf)

    @test pow_rev1(interval(-Inf,4.0), interval(0.0,2.0), interval(1.0, Inf)) === Interval(1.0, Inf)

    @test pow_rev1(interval(-4.0,4.0), interval(0.0,Inf), interval(1.0, Inf)) === Interval(1.0, Inf)

    @test pow_rev1(interval(-Inf,4.0), interval(0.0,Inf), interval(1.0, Inf)) === Interval(1.0, Inf)

    @test pow_rev1(interval(-4.0,4.0), interval(-Inf,2.0), interval(1.0, Inf)) === Interval(1.0, Inf)

    @test pow_rev1(interval(-Inf,4.0), interval(-Inf,2.0), interval(1.0, Inf)) === Interval(1.0, Inf)

    @test pow_rev1(interval(-4.0,4.0), interval(-Inf,Inf), interval(1.0, Inf)) === Interval(1.0, Inf)

    @test pow_rev1(interval(-Inf,4.0), interval(-Inf,Inf), interval(1.0, Inf)) === Interval(1.0, Inf)

    @test pow_rev1(interval(-4.0,Inf), interval(0.0,2.0), interval(1.0, Inf)) === Interval(1.0, Inf)

    @test pow_rev1(entireinterval(), interval(0.0,2.0), interval(1.0, Inf)) === Interval(1.0, Inf)

    @test pow_rev1(interval(-4.0,Inf), interval(0.0,Inf), interval(1.0, Inf)) === Interval(1.0, Inf)

    @test pow_rev1(entireinterval(), interval(0.0,Inf), interval(1.0, Inf)) === Interval(1.0, Inf)

    @test pow_rev1(interval(-4.0,Inf), interval(-Inf,2.0), interval(1.0, Inf)) === Interval(1.0, Inf)

    @test pow_rev1(entireinterval(), interval(-Inf,2.0), interval(1.0, Inf)) === Interval(1.0, Inf)

    @test pow_rev1(interval(-4.0,Inf), interval(-Inf,Inf), interval(1.0, Inf)) === Interval(1.0, Inf)

    @test pow_rev1(entireinterval(), interval(-Inf,Inf), interval(1.0, Inf)) === Interval(1.0, Inf)

    @test pow_rev1(interval(-4.0,4.0), interval(0.5,2.0), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(interval(-Inf,4.0), interval(0.5,2.0), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(interval(-4.0,4.0), interval(0.5,Inf), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(interval(-Inf,4.0), interval(0.5,Inf), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(interval(-4.0,Inf), interval(0.5,2.0), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(entireinterval(), interval(0.5,2.0), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(interval(-4.0,Inf), interval(0.5,Inf), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(entireinterval(), interval(0.5,Inf), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(interval(-4.0,4.0), interval(0.5,2.0), interval(0.0,1.0)) === Interval(0.0, 1.0)

    @test pow_rev1(interval(-Inf,4.0), interval(0.5,2.0), interval(0.0,1.0)) === Interval(0.0, 1.0)

    @test pow_rev1(interval(-4.0,4.0), interval(0.5,Inf), interval(0.0,1.0)) === Interval(0.0, 1.0)

    @test pow_rev1(interval(-Inf,4.0), interval(0.5,Inf), interval(0.0,1.0)) === Interval(0.0, 1.0)

    @test pow_rev1(interval(-4.0,Inf), interval(0.5,2.0), interval(0.0,1.0)) === Interval(0.0, 1.0)

    @test pow_rev1(entireinterval(), interval(0.5,2.0), interval(0.0,1.0)) === Interval(0.0, 1.0)

    @test pow_rev1(interval(-4.0,Inf), interval(0.5,Inf), interval(0.0,1.0)) === Interval(0.0, 1.0)

    @test pow_rev1(entireinterval(), interval(0.5,Inf), interval(0.0,1.0)) === Interval(0.0, 1.0)

    @test pow_rev1(interval(-4.0,4.0), interval(0.5,2.0), interval(1.0,Inf)) === Interval(1.0, Inf)

    @test pow_rev1(interval(-Inf,4.0), interval(0.5,2.0), interval(1.0,Inf)) === Interval(1.0, Inf)

    @test pow_rev1(interval(-4.0,4.0), interval(0.5,Inf), interval(1.0,Inf)) === Interval(1.0, Inf)

    @test pow_rev1(interval(-Inf,4.0), interval(0.5,Inf), interval(1.0,Inf)) === Interval(1.0, Inf)

    @test pow_rev1(interval(-4.0,Inf), interval(0.5,2.0), interval(1.0,Inf)) === Interval(1.0, Inf)

    @test pow_rev1(entireinterval(), interval(0.5,2.0), interval(1.0,Inf)) === Interval(1.0, Inf)

    @test pow_rev1(interval(-4.0,Inf), interval(0.5,Inf), interval(1.0,Inf)) === Interval(1.0, Inf)

    @test pow_rev1(entireinterval(), interval(0.5,Inf), interval(1.0,Inf)) === Interval(1.0, Inf)

    @test pow_rev1(interval(-4.0,4.0), interval(1.0,2.0), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(interval(-Inf,4.0), interval(1.0,2.0), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(interval(-4.0,4.0), interval(1.0,Inf), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(interval(-Inf,4.0), interval(1.0,Inf), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(interval(-4.0,Inf), interval(1.0,2.0), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(entireinterval(), interval(1.0,2.0), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(interval(-4.0,Inf), interval(1.0,Inf), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(entireinterval(), interval(1.0,Inf), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(interval(-4.0,4.0), interval(1.0,2.0), interval(0.0,1.0)) === Interval(0.0, 1.0)

    @test pow_rev1(interval(-Inf,4.0), interval(1.0,2.0), interval(0.0,1.0)) === Interval(0.0, 1.0)

    @test pow_rev1(interval(-4.0,4.0), interval(1.0,Inf), interval(0.0,1.0)) === Interval(0.0, 1.0)

    @test pow_rev1(interval(-Inf,4.0), interval(1.0,Inf), interval(0.0,1.0)) === Interval(0.0, 1.0)

    @test pow_rev1(interval(-4.0,Inf), interval(1.0,2.0), interval(0.0,1.0)) === Interval(0.0, 1.0)

    @test pow_rev1(entireinterval(), interval(1.0,2.0), interval(0.0,1.0)) === Interval(0.0, 1.0)

    @test pow_rev1(interval(-4.0,Inf), interval(1.0,Inf), interval(0.0,1.0)) === Interval(0.0, 1.0)

    @test pow_rev1(entireinterval(), interval(1.0,Inf), interval(0.0,1.0)) === Interval(0.0, 1.0)

    @test pow_rev1(interval(-4.0,4.0), interval(1.0,2.0), interval(1.0,Inf)) === Interval(1.0, Inf)

    @test pow_rev1(interval(-Inf,4.0), interval(1.0,2.0), interval(1.0,Inf)) === Interval(1.0, Inf)

    @test pow_rev1(interval(-4.0,4.0), interval(1.0,Inf), interval(1.0,Inf)) === Interval(1.0, Inf)

    @test pow_rev1(interval(-Inf,4.0), interval(1.0,Inf), interval(1.0,Inf)) === Interval(1.0, Inf)

    @test pow_rev1(interval(-4.0,Inf), interval(1.0,2.0), interval(1.0,Inf)) === Interval(1.0, Inf)

    @test pow_rev1(entireinterval(), interval(1.0,2.0), interval(1.0,Inf)) === Interval(1.0, Inf)

    @test pow_rev1(interval(-4.0,Inf), interval(1.0,Inf), interval(1.0,Inf)) === Interval(1.0, Inf)

    @test pow_rev1(entireinterval(), interval(1.0,Inf), interval(1.0,Inf)) === Interval(1.0, Inf)

    @test pow_rev1(interval(-4.0,4.0), interval(2.0,4.0), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(interval(-Inf,4.0), interval(2.0,4.0), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(interval(-4.0,4.0), interval(2.0,Inf), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(interval(-Inf,4.0), interval(2.0,Inf), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(interval(-4.0,Inf), interval(2.0,4.0), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(entireinterval(), interval(2.0,4.0), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(interval(-4.0,Inf), interval(2.0,Inf), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(entireinterval(), interval(2.0,Inf), entireinterval()) === Interval(0.0, Inf)

    @test_broken pow_rev1(interval(-4.0,4.0), interval(2.0,4.0), interval(0.0,1.0)) === Interval(0.0, 0x1.AE89F995AD3AEp-1)

    @test pow_rev1(interval(-Inf,4.0), interval(2.0,4.0), interval(0.0,1.0)) === Interval(0.0, 1.0)

    @test_broken pow_rev1(interval(-4.0,4.0), interval(2.0,Inf), interval(0.0,1.0)) === Interval(0.0, 0x1.AE89F995AD3AEp-1)

    @test pow_rev1(interval(-Inf,4.0), interval(2.0,Inf), interval(0.0,1.0)) === Interval(0.0, 1.0)

    @test_broken pow_rev1(interval(-4.0,Inf), interval(2.0,4.0), interval(0.0,1.0)) === Interval(0.0, 0x1.AE89F995AD3AEp-1)

    @test pow_rev1(entireinterval(), interval(2.0,4.0), interval(0.0,1.0)) === Interval(0.0, 1.0)

    @test_broken pow_rev1(interval(-4.0,Inf), interval(2.0,Inf), interval(0.0,1.0)) === Interval(0.0, 0x1.AE89F995AD3AEp-1)

    @test pow_rev1(entireinterval(), interval(2.0,Inf), interval(0.0,1.0)) === Interval(0.0, 1.0)

    @test_broken pow_rev1(interval(-4.0,4.0), interval(2.0,4.0), interval(1.0,Inf)) === Interval(0x1.306FE0A31B715p0, Inf)

    @test_broken pow_rev1(interval(-Inf,4.0), interval(2.0,4.0), interval(1.0,Inf)) === Interval(0x1.306FE0A31B715p0, Inf)

    @test_broken pow_rev1(interval(-4.0,4.0), interval(2.0,Inf), interval(1.0,Inf)) === Interval(0x1.306FE0A31B715p0, Inf)

    @test_broken pow_rev1(interval(-Inf,4.0), interval(2.0,Inf), interval(1.0,Inf)) === Interval(0x1.306FE0A31B715p0, Inf)

    @test pow_rev1(interval(-4.0,Inf), interval(2.0,4.0), interval(1.0,Inf)) === Interval(1.0, Inf)

    @test pow_rev1(entireinterval(), interval(2.0,4.0), interval(1.0,Inf)) === Interval(1.0, Inf)

    @test pow_rev1(interval(-4.0,Inf), interval(2.0,Inf), interval(1.0,Inf)) === Interval(1.0, Inf)

    @test pow_rev1(entireinterval(), interval(2.0,Inf), interval(1.0,Inf)) === Interval(1.0, Inf)

    @test pow_rev1(interval(0.0,4.0), interval(0.0,0.5), entireinterval()) === Interval(0.0, 0x1.AE89F995AD3AEp-1)

    @test pow_rev1(interval(0.0,4.0), interval(-Inf,0.5), entireinterval()) === Interval(0.0, 0x1.AE89F995AD3AEp-1)

    @test pow_rev1(interval(0.0,Inf), interval(0.0,0.5), entireinterval()) === Interval(0.0, 1.0)

    @test pow_rev1(interval(0.0,Inf), interval(-Inf,0.5), entireinterval()) === Interval(0.0, 1.0)

    @test pow_rev1(interval(0.0,4.0), interval(0.0,0.5), interval(0.0, 1.0)) === Interval(0.0, 0x1.AE89F995AD3AEp-1)

    @test pow_rev1(interval(0.0,4.0), interval(-Inf,0.5), interval(0.0, 1.0)) === Interval(0.0, 0x1.AE89F995AD3AEp-1)

    @test pow_rev1(interval(0.0,Inf), interval(0.0,0.5), interval(0.0, 1.0)) === Interval(0.0, 1.0)

    @test pow_rev1(interval(0.0,Inf), interval(-Inf,0.5), interval(0.0, 1.0)) === Interval(0.0, 1.0)

    @test pow_rev1(interval(0.0,4.0), interval(0.0,0.5), interval(1.0, Inf)) === emptyinterval()

    @test pow_rev1(interval(0.0,4.0), interval(-Inf,0.5), interval(1.0, Inf)) === emptyinterval()

    @test_broken pow_rev1(interval(0.0,Inf), interval(0.0,0.5), interval(1.0, Inf)) === emptyinterval()

    @test_broken pow_rev1(interval(0.0,Inf), interval(-Inf,0.5), interval(1.0, Inf)) === emptyinterval()

    @test pow_rev1(interval(0.0,4.0), interval(0.25,0.5), entireinterval()) === Interval(0.0, 0x1.AE89F995AD3AEp-1)

    @test pow_rev1(interval(0.0,Inf), interval(0.25,0.5), entireinterval()) === Interval(0.0, 1.0)

    @test pow_rev1(interval(0.0,4.0), interval(0.25,0.5), interval(0.0, 1.0)) === Interval(0.0, 0x1.AE89F995AD3AEp-1)

    @test pow_rev1(interval(0.0,Inf), interval(0.25,0.5), interval(0.0, 1.0)) === Interval(0.0, 1.0)

    @test pow_rev1(interval(0.0,4.0), interval(0.25,0.5), interval(1.0, Inf)) === emptyinterval()

    @test_broken pow_rev1(interval(0.0,Inf), interval(0.25,0.5), interval(1.0, Inf)) === emptyinterval()

    @test_broken pow_rev1(interval(0.0,4.0), interval(0.25,1.0), entireinterval()) === Interval(0.0, Inf)

    @test_broken pow_rev1(interval(0.0,4.0), interval(1.0,1.0), entireinterval()) === Interval(0.0, Inf)

    @test_broken pow_rev1(interval(0.0,Inf), interval(0.25,1.0), entireinterval()) === Interval(0.0, Inf)

    @test_broken pow_rev1(interval(0.0,Inf), interval(1.0,1.0), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(interval(0.0,4.0), interval(0.25,1.0), interval(0.0, 1.0)) === Interval(0.0, 1.0)

    @test_broken pow_rev1(interval(0.0,4.0), interval(1.0,1.0), interval(0.0, 1.0)) === Interval(0.0, 1.0)

    @test pow_rev1(interval(0.0,Inf), interval(0.25,1.0), interval(0.0, 1.0)) === Interval(0.0, 1.0)

    @test_broken pow_rev1(interval(0.0,Inf), interval(1.0,1.0), interval(0.0, 1.0)) === Interval(0.0, 1.0)

    @test_broken pow_rev1(interval(0.0,4.0), interval(0.25,1.0), interval(1.0, Inf)) === Interval(1.0, Inf)

    @test_broken pow_rev1(interval(0.0,4.0), interval(1.0,1.0), interval(1.0, Inf)) === Interval(1.0, Inf)

    @test_broken pow_rev1(interval(0.0,Inf), interval(0.25,1.0), interval(1.0, Inf)) === Interval(1.0, Inf)

    @test_broken pow_rev1(interval(0.0,Inf), interval(1.0,1.0), interval(1.0, Inf)) === Interval(1.0, Inf)

    @test_broken pow_rev1(interval(0.0,4.0), interval(0.0,1.0), entireinterval()) === Interval(0.0, Inf)

    @test_broken pow_rev1(interval(0.0,Inf), interval(0.0,1.0), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(interval(0.0,4.0), interval(0.0,1.0), interval(0.0, 1.0)) === Interval(0.0, 1.0)

    @test pow_rev1(interval(0.0,Inf), interval(0.0,1.0), interval(0.0, 1.0)) === Interval(0.0, 1.0)

    @test_broken pow_rev1(interval(0.0,4.0), interval(0.0,1.0), interval(1.0, Inf)) === Interval(1.0, Inf)

    @test_broken pow_rev1(interval(0.0,Inf), interval(0.0,1.0), interval(1.0, Inf)) === Interval(1.0, Inf)

    @test pow_rev1(interval(0.0,4.0), interval(0.0,2.0), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(interval(0.0,4.0), interval(0.0,Inf), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(interval(0.0,4.0), interval(-Inf,2.0), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(interval(0.0,4.0), interval(-Inf,Inf), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(interval(0.0,Inf), interval(0.0,2.0), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(interval(0.0,Inf), interval(0.0,Inf), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(interval(0.0,Inf), interval(-Inf,2.0), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(interval(0.0,Inf), interval(-Inf,Inf), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(interval(0.0,4.0), interval(0.0,2.0), interval(0.0, 1.0)) === Interval(0.0, 1.0)

    @test pow_rev1(interval(0.0,4.0), interval(0.0,Inf), interval(0.0, 1.0)) === Interval(0.0, 1.0)

    @test pow_rev1(interval(0.0,4.0), interval(-Inf,2.0), interval(0.0, 1.0)) === Interval(0.0, 1.0)

    @test pow_rev1(interval(0.0,4.0), interval(-Inf,Inf), interval(0.0, 1.0)) === Interval(0.0, 1.0)

    @test pow_rev1(interval(0.0,Inf), interval(0.0,2.0), interval(0.0, 1.0)) === Interval(0.0, 1.0)

    @test pow_rev1(interval(0.0,Inf), interval(0.0,Inf), interval(0.0, 1.0)) === Interval(0.0, 1.0)

    @test pow_rev1(interval(0.0,Inf), interval(-Inf,2.0), interval(0.0, 1.0)) === Interval(0.0, 1.0)

    @test pow_rev1(interval(0.0,Inf), interval(-Inf,Inf), interval(0.0, 1.0)) === Interval(0.0, 1.0)

    @test pow_rev1(interval(0.0,4.0), interval(0.0,2.0), interval(1.0, Inf)) === Interval(1.0, Inf)

    @test pow_rev1(interval(0.0,4.0), interval(0.0,Inf), interval(1.0, Inf)) === Interval(1.0, Inf)

    @test pow_rev1(interval(0.0,4.0), interval(-Inf,2.0), interval(1.0, Inf)) === Interval(1.0, Inf)

    @test pow_rev1(interval(0.0,4.0), interval(-Inf,Inf), interval(1.0, Inf)) === Interval(1.0, Inf)

    @test pow_rev1(interval(0.0,Inf), interval(0.0,2.0), interval(1.0, Inf)) === Interval(1.0, Inf)

    @test pow_rev1(interval(0.0,Inf), interval(0.0,Inf), interval(1.0, Inf)) === Interval(1.0, Inf)

    @test pow_rev1(interval(0.0,Inf), interval(-Inf,2.0), interval(1.0, Inf)) === Interval(1.0, Inf)

    @test pow_rev1(interval(0.0,Inf), interval(-Inf,Inf), interval(1.0, Inf)) === Interval(1.0, Inf)

    @test pow_rev1(interval(0.0,4.0), interval(0.5,2.0), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(interval(0.0,4.0), interval(0.5,Inf), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(interval(0.0,Inf), interval(0.5,2.0), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(interval(0.0,Inf), interval(0.5,Inf), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(interval(0.0,4.0), interval(0.5,2.0), interval(0.0,1.0)) === Interval(0.0, 1.0)

    @test pow_rev1(interval(0.0,4.0), interval(0.5,Inf), interval(0.0,1.0)) === Interval(0.0, 1.0)

    @test pow_rev1(interval(0.0,Inf), interval(0.5,2.0), interval(0.0,1.0)) === Interval(0.0, 1.0)

    @test pow_rev1(interval(0.0,Inf), interval(0.5,Inf), interval(0.0,1.0)) === Interval(0.0, 1.0)

    @test pow_rev1(interval(0.0,4.0), interval(0.5,2.0), interval(1.0,Inf)) === Interval(1.0, Inf)

    @test pow_rev1(interval(0.0,4.0), interval(0.5,Inf), interval(1.0,Inf)) === Interval(1.0, Inf)

    @test pow_rev1(interval(0.0,Inf), interval(0.5,2.0), interval(1.0,Inf)) === Interval(1.0, Inf)

    @test pow_rev1(interval(0.0,Inf), interval(0.5,Inf), interval(1.0,Inf)) === Interval(1.0, Inf)

    @test_broken pow_rev1(interval(0.0,4.0), interval(1.0,2.0), entireinterval()) === Interval(0.0, Inf)

    @test_broken pow_rev1(interval(0.0,4.0), interval(1.0,Inf), entireinterval()) === Interval(0.0, Inf)

    @test_broken pow_rev1(interval(0.0,Inf), interval(1.0,2.0), entireinterval()) === Interval(0.0, Inf)

    @test_broken pow_rev1(interval(0.0,Inf), interval(1.0,Inf), entireinterval()) === Interval(0.0, Inf)

    @test_broken pow_rev1(interval(0.0,4.0), interval(1.0,2.0), interval(0.0,1.0)) === Interval(0.0, 1.0)

    @test_broken pow_rev1(interval(0.0,4.0), interval(1.0,Inf), interval(0.0,1.0)) === Interval(0.0, 1.0)

    @test_broken pow_rev1(interval(0.0,Inf), interval(1.0,2.0), interval(0.0,1.0)) === Interval(0.0, 1.0)

    @test_broken pow_rev1(interval(0.0,Inf), interval(1.0,Inf), interval(0.0,1.0)) === Interval(0.0, 1.0)

    @test pow_rev1(interval(0.0,4.0), interval(1.0,2.0), interval(1.0,Inf)) === Interval(1.0, Inf)

    @test pow_rev1(interval(0.0,4.0), interval(1.0,Inf), interval(1.0,Inf)) === Interval(1.0, Inf)

    @test pow_rev1(interval(0.0,Inf), interval(1.0,2.0), interval(1.0,Inf)) === Interval(1.0, Inf)

    @test pow_rev1(interval(0.0,Inf), interval(1.0,Inf), interval(1.0,Inf)) === Interval(1.0, Inf)

    @test pow_rev1(interval(0.0,4.0), interval(2.0,4.0), entireinterval()) === Interval(0x1.306FE0A31B715p0, Inf)

    @test pow_rev1(interval(0.0,4.0), interval(2.0,Inf), entireinterval()) === Interval(0x1.306FE0A31B715p0, Inf)

    @test pow_rev1(interval(0.0,Inf), interval(2.0,4.0), entireinterval()) === Interval(1.0, Inf)

    @test pow_rev1(interval(0.0,Inf), interval(2.0,Inf), entireinterval()) === Interval(1.0, Inf)

    @test pow_rev1(interval(0.0,4.0), interval(2.0,4.0), interval(0.0,1.0)) === emptyinterval()

    @test pow_rev1(interval(0.0,4.0), interval(2.0,Inf), interval(0.0,1.0)) === emptyinterval()

    @test_broken pow_rev1(interval(0.0,Inf), interval(2.0,4.0), interval(0.0,1.0)) === emptyinterval()

    @test_broken pow_rev1(interval(0.0,Inf), interval(2.0,Inf), interval(0.0,1.0)) === emptyinterval()

    @test pow_rev1(interval(0.0,4.0), interval(2.0,4.0), interval(1.0,Inf)) === Interval(0x1.306FE0A31B715p0, Inf)

    @test pow_rev1(interval(0.0,4.0), interval(2.0,Inf), interval(1.0,Inf)) === Interval(0x1.306FE0A31B715p0, Inf)

    @test pow_rev1(interval(0.0,Inf), interval(2.0,4.0), interval(1.0,Inf)) === Interval(1.0, Inf)

    @test pow_rev1(interval(0.0,Inf), interval(2.0,Inf), interval(1.0,Inf)) === Interval(1.0, Inf)

    @test pow_rev1(interval(2.0,4.0), interval(0.0,0.5), entireinterval()) === Interval(0.0, 0x1.AE89F995AD3AEp-1)

    @test pow_rev1(interval(2.0,4.0), interval(-Inf,0.5), entireinterval()) === Interval(0.0, 0x1.AE89F995AD3AEp-1)

    @test pow_rev1(interval(2.0,Inf), interval(0.0,0.5), entireinterval()) === Interval(0.0, 1.0)

    @test pow_rev1(interval(2.0,Inf), interval(-Inf,0.5), entireinterval()) === Interval(0.0, 1.0)

    @test pow_rev1(interval(2.0,4.0), interval(0.25,0.5), entireinterval()) === Interval(0.5, 0x1.AE89F995AD3AEp-1)

    @test pow_rev1(interval(2.0,Inf), interval(0.25,0.5), entireinterval()) === Interval(0.5, 1.0)

    @test pow_rev1(interval(2.0,4.0), interval(0.25,1.0), entireinterval()) === Interval(0.5, 1.0)

    @test pow_rev1(interval(2.0,4.0), interval(1.0,1.0), entireinterval()) === Interval(1.0, 1.0)

    @test pow_rev1(interval(2.0,Inf), interval(0.25,1.0), entireinterval()) === Interval(0.5, 1.0)

    @test pow_rev1(interval(2.0,Inf), interval(1.0,1.0), entireinterval()) === Interval(1.0, 1.0)

    @test pow_rev1(interval(2.0,4.0), interval(0.0,1.0), entireinterval()) === Interval(0.0, 1.0)

    @test pow_rev1(interval(2.0,Inf), interval(0.0,1.0), entireinterval()) === Interval(0.0, 1.0)

    @test pow_rev1(interval(2.0,4.0), interval(0.0,2.0), entireinterval()) === Interval(0.0, 0x1.6A09E667F3BCDp0)

    @test pow_rev1(interval(2.0,4.0), interval(0.0,Inf), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(interval(2.0,4.0), interval(-Inf,2.0), entireinterval()) === Interval(0.0, 0x1.6A09E667F3BCDp0)

    @test pow_rev1(interval(2.0,4.0), interval(-Inf,Inf), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(interval(2.0,Inf), interval(0.0,2.0), entireinterval()) === Interval(0.0, 0x1.6A09E667F3BCDp0)

    @test pow_rev1(interval(2.0,Inf), interval(0.0,Inf), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(interval(2.0,Inf), interval(-Inf,2.0), entireinterval()) === Interval(0.0, 0x1.6A09E667F3BCDp0)

    @test pow_rev1(interval(2.0,Inf), interval(-Inf,Inf), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev1(interval(2.0,4.0), interval(0.5,2.0), entireinterval()) === Interval(0x1.6A09E667F3BCCp-1, 0x1.6A09E667F3BCDp0)

    @test pow_rev1(interval(2.0,4.0), interval(0.5,Inf), entireinterval()) === Interval(0x1.6A09E667F3BCCp-1, Inf)

    @test pow_rev1(interval(2.0,Inf), interval(0.5,2.0), entireinterval()) === Interval(0x1.6A09E667F3BCCp-1, 0x1.6A09E667F3BCDp0)

    @test pow_rev1(interval(2.0,Inf), interval(0.5,Inf), entireinterval()) === Interval(0x1.6A09E667F3BCCp-1, Inf)

    @test pow_rev1(interval(2.0,4.0), interval(1.0,2.0), entireinterval()) === Interval(1.0, 0x1.6A09E667F3BCDp0)

    @test pow_rev1(interval(2.0,4.0), interval(1.0,Inf), entireinterval()) === Interval(1.0, Inf)

    @test pow_rev1(interval(2.0,Inf), interval(1.0,2.0), entireinterval()) === Interval(1.0, 0x1.6A09E667F3BCDp0)

    @test pow_rev1(interval(2.0,Inf), interval(1.0,Inf), entireinterval()) === Interval(1.0, Inf)

    @test pow_rev1(interval(2.0,4.0), interval(2.0,4.0), entireinterval()) === Interval(0x1.306FE0A31B715p0, 2.0)

    @test pow_rev1(interval(2.0,4.0), interval(2.0,Inf), entireinterval()) === Interval(0x1.306FE0A31B715p0, Inf)

    @test pow_rev1(interval(2.0,Inf), interval(2.0,4.0), entireinterval()) === Interval(1.0, 2.0)

    @test pow_rev1(interval(2.0,Inf), interval(2.0,Inf), entireinterval()) === Interval(1.0, Inf)

end

@testset "minimal.powRev2_test" begin

    @test pow_rev2(emptyinterval(), emptyinterval(), emptyinterval()) === emptyinterval()

    @test pow_rev2(emptyinterval(), entireinterval(), emptyinterval()) === emptyinterval()

    @test pow_rev2(entireinterval(), emptyinterval(), emptyinterval()) === emptyinterval()

    @test pow_rev2(entireinterval(), entireinterval(), emptyinterval()) === emptyinterval()

    @test pow_rev2(emptyinterval(), emptyinterval(), entireinterval()) === emptyinterval()

    @test pow_rev2(emptyinterval(), entireinterval(), entireinterval()) === emptyinterval()

    @test pow_rev2(entireinterval(), emptyinterval(), entireinterval()) === emptyinterval()

    @test pow_rev2(entireinterval(), entireinterval(), entireinterval()) === entireinterval()

    @test pow_rev2(interval(0.0, 0.0), interval(-Inf, -0.1), entireinterval()) === emptyinterval()

    @test pow_rev2(interval(0.0, 0.0), interval(0.1, Inf), entireinterval()) === emptyinterval()

    @test pow_rev2(interval(0.0, 0.0), interval(0.0, 0.0), interval(-Inf, 0.0)) === emptyinterval()

    @test_broken pow_rev2(interval(-Inf, 0.9), interval(0.0, 0.9), interval(-Inf, 0.0)) === emptyinterval()

    @test_broken pow_rev2(interval(1.1, Inf), interval(1.1, Inf), interval(-Inf, 0.0)) === emptyinterval()

    @test_broken pow_rev2(interval(-Inf, 0.9), interval(1.1, Inf), interval(0.0, Inf)) === emptyinterval()

    @test_broken pow_rev2(interval(1.1, Inf), interval(0.0, 0.9), interval(0.0, Inf)) === emptyinterval()

    @test_broken pow_rev2(interval(0.0, 0.0), interval(0.0, 0.0), entireinterval()) === Interval(0.0, Inf)

    @test_broken pow_rev2(interval(-Inf, 0.0), interval(-Inf, 0.0), interval(0.0, Inf)) === Interval(0.0, Inf)

    @test_broken pow_rev2(interval(-Inf, 0.0), interval(-Inf, 0.0), interval(1.0, 2.0)) === Interval(1.0, 2.0)

    @test_broken pow_rev2(entireinterval(), interval(0.0, 0.0), entireinterval()) === Interval(0.0, Inf)

    @test_broken pow_rev2(entireinterval(), interval(-Inf, 0.0), interval(0.0, Inf)) === Interval(0.0, Inf)

    @test_broken pow_rev2(entireinterval(), interval(-Inf, 0.0), interval(1.0, 2.0)) === Interval(1.0, 2.0)

    @test_broken pow_rev2(interval(0.0, 0.0), entireinterval(), entireinterval()) === Interval(0.0, Inf)

    @test_broken pow_rev2(interval(-Inf, 0.0), entireinterval(), interval(0.0, Inf)) === Interval(0.0, Inf)

    @test_broken pow_rev2(interval(-Inf, 0.0), entireinterval(), interval(1.0, 2.0)) === Interval(1.0, 2.0)

    @test_broken pow_rev2(interval(1.0, 1.0), entireinterval(), entireinterval()) === entireinterval()

    @test_broken pow_rev2(interval(1.0, 1.0), interval(1.0, 1.0), entireinterval()) === entireinterval()

    @test_broken pow_rev2(interval(1.0, 1.0), interval(1.0, 1.0), interval(2.0, 3.0)) === Interval(2.0, 3.0)

    @test_broken pow_rev2(entireinterval(), interval(1.0, 1.0), entireinterval()) === entireinterval()

    @test_broken pow_rev2(entireinterval(), interval(1.0, 1.0), interval(2.0, 3.0)) === Interval(2.0, 3.0)

    @test pow_rev2(interval(2.0, 3.0), interval(1.0, 1.0), entireinterval()) === Interval(0.0, 0.0)

    @test pow_rev2(interval(2.0, 3.0), interval(1.0, 1.0), interval(2.0, 3.0)) === emptyinterval()

    @test pow_rev2(interval(0.0, 0.5), interval(0.0, 0.5), entireinterval()) === Interval(0.0, Inf)

    @test_broken pow_rev2(interval(0.0, 0.5), interval(0.0, 0.5), interval(-Inf, 0.0)) === emptyinterval()

    @test_broken pow_rev2(interval(0.0, 0.5), interval(0.25, 0.5), entireinterval()) === Interval(0.0, 2.0)

    @test_broken pow_rev2(interval(0.0, 0.25), interval(0.5, 1.0), entireinterval()) === Interval(0.0, 0.5)

    @test pow_rev2(interval(0.0, 0.25), interval(1.0, 1.0), entireinterval()) === Interval(0.0, 0.0)

    @test pow_rev2(interval(0.0, 0.25), interval(0.0, 1.0), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev2(interval(0.0, 0.25), interval(0.0, 1.0), interval(-Inf, 0.0)) === Interval(0.0, 0.0)

    @test_broken pow_rev2(interval(0.0, 0.25), interval(0.0, 2.0), entireinterval()) === Interval(-0.5, Inf)

    @test pow_rev2(interval(0.0, 0.25), interval(0.0, Inf), entireinterval()) === entireinterval()

    @test_broken pow_rev2(interval(0.0, 0.25), interval(0.5, 2.0), entireinterval()) === Interval(-0.5, 0.5)

    @test_broken pow_rev2(interval(0.0, 0.25), interval(0.5, Inf), entireinterval()) === Interval(-Inf, 0.5)

    @test_broken pow_rev2(interval(0.0, 0.25), interval(1.0, 2.0), entireinterval()) === Interval(-0.5, 0.0)

    @test pow_rev2(interval(0.0, 0.25), interval(1.0, 2.0), interval(0.0, Inf)) === Interval(0.0, 0.0)

    @test pow_rev2(interval(0.0, 0.25), interval(1.0, Inf), entireinterval()) === Interval(-Inf, 0.0)

    @test pow_rev2(interval(0.0, 0.25), interval(1.0, Inf), interval(0.0, Inf)) === Interval(0.0, 0.0)

    @test_broken pow_rev2(interval(0.0, 0.25), interval(2.0, 4.0), entireinterval()) === Interval(-1.0, 0.0)

    @test_broken pow_rev2(interval(0.0, 0.25), interval(2.0, 4.0), interval(0.0, Inf)) === emptyinterval()

    @test pow_rev2(interval(0.0, 0.25), interval(2.0, Inf), entireinterval()) === Interval(-Inf, 0.0)

    @test_broken pow_rev2(interval(0.0, 0.25), interval(2.0, Inf), interval(0.0, Inf)) === emptyinterval()

    @test_broken pow_rev2(interval(0.25, 0.5), interval(0.0, 0.5), entireinterval()) === Interval(0.5, Inf)

    @test_broken pow_rev2(interval(0.25, 0.5), interval(0.25, 0.5), entireinterval()) === Interval(0.5, 2.0)

    @test_broken pow_rev2(interval(0.25, 0.5), interval(0.5, 1.0), entireinterval()) === Interval(0.0, 1.0)

    @test pow_rev2(interval(0.25, 0.5), interval(1.0, 1.0), entireinterval()) === Interval(0.0, 0.0)

    @test pow_rev2(interval(0.25, 0.5), interval(0.0, 1.0), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev2(interval(0.25, 0.5), interval(0.0, 1.0), interval(-Inf, 0.0)) === Interval(0.0, 0.0)

    @test_broken pow_rev2(interval(0.25, 0.5), interval(0.0, 2.0), entireinterval()) === Interval(-1.0, Inf)

    @test pow_rev2(interval(0.25, 0.5), interval(0.0, Inf), entireinterval()) === entireinterval()

    @test_broken pow_rev2(interval(0.25, 0.5), interval(0.5, 2.0), entireinterval()) === Interval(-1.0, 1.0)

    @test_broken pow_rev2(interval(0.25, 0.5), interval(0.5, Inf), entireinterval()) === Interval(-Inf, 1.0)

    @test_broken pow_rev2(interval(0.25, 0.5), interval(1.0, 2.0), entireinterval()) === Interval(-1.0, 0.0)

    @test pow_rev2(interval(0.25, 0.5), interval(1.0, Inf), entireinterval()) === Interval(-Inf, 0.0)

    @test_broken pow_rev2(interval(0.25, 0.5), interval(2.0, 4.0), entireinterval()) === Interval(-2.0, -0.5)

    @test_broken pow_rev2(interval(0.25, 0.5), interval(2.0, Inf), entireinterval()) === entireinterval()

    @test_broken pow_rev2(interval(0.25, 1.0), interval(0.0, 0.5), entireinterval()) === Interval(0.5, Inf)

    @test pow_rev2(interval(1.0, 1.0), interval(0.0, 0.5), entireinterval()) === emptyinterval()

    @test_broken pow_rev2(interval(0.25, 1.0), interval(0.25, 0.5), entireinterval()) === Interval(0.5, Inf)

    @test pow_rev2(interval(1.0, 1.0), interval(0.25, 0.5), entireinterval()) === emptyinterval()

    @test_broken pow_rev2(interval(0.25, 1.0), interval(0.5, 1.0), entireinterval()) === entireinterval()

    @test_broken pow_rev2(interval(0.25, 1.0), interval(1.0, 1.0), entireinterval()) === entireinterval()

    @test_broken pow_rev2(interval(1.0, 1.0), interval(0.5, 1.0), entireinterval()) === entireinterval()

    @test_broken pow_rev2(interval(1.0, 1.0), interval(1.0, 1.0), entireinterval()) === entireinterval()

    @test_broken pow_rev2(interval(0.25, 1.0), interval(0.0, 1.0), entireinterval()) === entireinterval()

    @test_broken pow_rev2(interval(1.0, 1.0), interval(0.0, 1.0), entireinterval()) === entireinterval()

    @test pow_rev2(interval(0.25, 1.0), interval(0.0, 2.0), entireinterval()) === entireinterval()

    @test_broken pow_rev2(interval(1.0, 1.0), interval(0.0, 2.0), entireinterval()) === entireinterval()

    @test pow_rev2(interval(0.25, 1.0), interval(0.0, Inf), entireinterval()) === entireinterval()

    @test_broken pow_rev2(interval(1.0, 1.0), interval(0.0, Inf), entireinterval()) === entireinterval()

    @test pow_rev2(interval(0.25, 1.0), interval(0.5, 2.0), entireinterval()) === entireinterval()

    @test_broken pow_rev2(interval(1.0, 1.0), interval(0.5, 2.0), entireinterval()) === entireinterval()

    @test pow_rev2(interval(0.25, 1.0), interval(0.5, Inf), entireinterval()) === entireinterval()

    @test_broken pow_rev2(interval(1.0, 1.0), interval(0.5, Inf), entireinterval()) === entireinterval()

    @test_broken pow_rev2(interval(0.25, 1.0), interval(1.0, 2.0), entireinterval()) === entireinterval()

    @test_broken pow_rev2(interval(1.0, 1.0), interval(1.0, 2.0), entireinterval()) === entireinterval()

    @test_broken pow_rev2(interval(0.25, 1.0), interval(1.0, Inf), entireinterval()) === entireinterval()

    @test_broken pow_rev2(interval(1.0, 1.0), interval(1.0, Inf), entireinterval()) === entireinterval()

    @test_broken pow_rev2(interval(0.25, 1.0), interval(2.0, 4.0), entireinterval()) === Interval(-Inf, -0.5)

    @test pow_rev2(interval(1.0, 1.0), interval(2.0, 4.0), entireinterval()) === emptyinterval()

    @test_broken pow_rev2(interval(0.25, 1.0), interval(2.0, Inf), entireinterval()) === Interval(-Inf, 0.0)

    @test pow_rev2(interval(1.0, 1.0), interval(2.0, Inf), entireinterval()) === emptyinterval()

    @test pow_rev2(interval(0.0, 1.0), interval(0.0, 0.5), entireinterval()) === Interval(0.0, Inf)

    @test_broken pow_rev2(interval(0.0, 1.0), interval(0.0, 0.5), interval(-Inf, 0.0)) === emptyinterval()

    @test pow_rev2(interval(0.0, 1.0), interval(0.0, 0.5), interval(0.0, Inf)) === Interval(0.0, Inf)

    @test pow_rev2(interval(0.0, 1.0), interval(0.25, 0.5), entireinterval()) === Interval(0.0, Inf)

    @test_broken pow_rev2(interval(0.0, 1.0), interval(0.25, 0.5), interval(-Inf, 0.0)) === emptyinterval()

    @test pow_rev2(interval(0.0, 1.0), interval(0.25, 0.5), interval(0.0, Inf)) === Interval(0.0, Inf)

    @test_broken pow_rev2(interval(0.0, 1.0), interval(0.5, 1.0), entireinterval()) === entireinterval()

    @test_broken pow_rev2(interval(0.0, 1.0), interval(1.0, 1.0), entireinterval()) === entireinterval()

    @test_broken pow_rev2(interval(0.0, 1.0), interval(0.5, 1.0), interval(-Inf, 0.0)) === Interval(-Inf, 0.0)

    @test_broken pow_rev2(interval(0.0, 1.0), interval(1.0, 1.0), interval(-Inf, 0.0)) === Interval(-Inf, 0.0)

    @test pow_rev2(interval(0.0, 1.0), interval(0.5, 1.0), interval(0.0, Inf)) === Interval(0.0, Inf)

    @test_broken pow_rev2(interval(0.0, 1.0), interval(1.0, 1.0), interval(0.0, Inf)) === Interval(0.0, Inf)

    @test_broken pow_rev2(interval(0.0, 1.0), interval(0.0, 1.0), entireinterval()) === entireinterval()

    @test_broken pow_rev2(interval(0.0, 1.0), interval(0.0, 1.0), interval(-Inf, 0.0)) === Interval(-Inf, 0.0)

    @test pow_rev2(interval(0.0, 1.0), interval(0.0, 1.0), interval(0.0, Inf)) === Interval(0.0, Inf)

    @test pow_rev2(interval(0.0, 1.0), interval(0.0, 2.0), entireinterval()) === entireinterval()

    @test pow_rev2(interval(0.0, 1.0), interval(0.0, 2.0), interval(-Inf, 0.0)) === Interval(-Inf, 0.0)

    @test pow_rev2(interval(0.0, 1.0), interval(0.0, 2.0), interval(0.0, Inf)) === Interval(0.0, Inf)

    @test pow_rev2(interval(0.0, 1.0), interval(0.0, Inf), entireinterval()) === entireinterval()

    @test pow_rev2(interval(0.0, 1.0), interval(0.0, Inf), interval(-Inf, 0.0)) === Interval(-Inf, 0.0)

    @test pow_rev2(interval(0.0, 1.0), interval(0.0, Inf), interval(0.0, Inf)) === Interval(0.0, Inf)

    @test pow_rev2(interval(0.0, 1.0), interval(0.5, 2.0), entireinterval()) === entireinterval()

    @test pow_rev2(interval(0.0, 1.0), interval(0.5, 2.0), interval(-Inf, 0.0)) === Interval(-Inf, 0.0)

    @test pow_rev2(interval(0.0, 1.0), interval(0.5, 2.0), interval(0.0, Inf)) === Interval(0.0, Inf)

    @test pow_rev2(interval(0.0, 1.0), interval(0.5, Inf), entireinterval()) === entireinterval()

    @test pow_rev2(interval(0.0, 1.0), interval(0.5, Inf), interval(-Inf, 0.0)) === Interval(-Inf, 0.0)

    @test pow_rev2(interval(0.0, 1.0), interval(0.5, Inf), interval(0.0, Inf)) === Interval(0.0, Inf)

    @test_broken pow_rev2(interval(0.0, 1.0), interval(1.0, 2.0), entireinterval()) === entireinterval()

    @test pow_rev2(interval(0.0, 1.0), interval(1.0, 2.0), interval(-Inf, 0.0)) === Interval(-Inf, 0.0)

    @test_broken pow_rev2(interval(0.0, 1.0), interval(1.0, 2.0), interval(0.0, Inf)) === Interval(0.0, Inf)

    @test_broken pow_rev2(interval(0.0, 1.0), interval(1.0, Inf), entireinterval()) === entireinterval()

    @test pow_rev2(interval(0.0, 1.0), interval(1.0, Inf), interval(-Inf, 0.0)) === Interval(-Inf, 0.0)

    @test_broken pow_rev2(interval(0.0, 1.0), interval(1.0, Inf), interval(0.0, Inf)) === Interval(0.0, Inf)

    @test pow_rev2(interval(0.0, 1.0), interval(2.0, 4.0), entireinterval()) === Interval(-Inf, 0.0)

    @test pow_rev2(interval(0.0, 1.0), interval(2.0, 4.0), interval(-Inf, 0.0)) === Interval(-Inf, 0.0)

    @test_broken pow_rev2(interval(0.0, 1.0), interval(2.0, 4.0), interval(0.0, Inf)) === emptyinterval()

    @test pow_rev2(interval(0.0, 1.0), interval(2.0, Inf), entireinterval()) === Interval(-Inf, 0.0)

    @test pow_rev2(interval(0.0, 1.0), interval(2.0, Inf), interval(-Inf, 0.0)) === Interval(-Inf, 0.0)

    @test_broken pow_rev2(interval(0.0, 1.0), interval(2.0, Inf), interval(0.0, Inf)) === emptyinterval()

    @test pow_rev2(interval(0.0, 2.0), interval(0.0, 0.5), entireinterval()) === entireinterval()

    @test_broken pow_rev2(interval(0.0, 2.0), interval(0.0, 0.5), interval(-Inf, 0.0)) === Interval(-Inf, -1.0)

    @test pow_rev2(interval(0.0, 2.0), interval(0.0, 0.5), interval(0.0, Inf)) === Interval(0.0, Inf)

    @test pow_rev2(interval(0.0, Inf), interval(0.0, 0.5), entireinterval()) === entireinterval()

    @test pow_rev2(interval(0.0, Inf), interval(0.0, 0.5), interval(-Inf, 0.0)) === Interval(-Inf, 0.0)

    @test pow_rev2(interval(0.0, Inf), interval(0.0, 0.5), interval(0.0, Inf)) === Interval(0.0, Inf)

    @test pow_rev2(interval(0.0, 2.0), interval(0.25, 0.5), entireinterval()) === entireinterval()

    @test_broken pow_rev2(interval(0.0, 2.0), interval(0.25, 0.5), interval(-Inf, 0.0)) === Interval(-Inf, -1.0)

    @test pow_rev2(interval(0.0, 2.0), interval(0.25, 0.5), interval(0.0, Inf)) === Interval(0.0, Inf)

    @test pow_rev2(interval(0.0, Inf), interval(0.25, 0.5), entireinterval()) === entireinterval()

    @test pow_rev2(interval(0.0, Inf), interval(0.25, 0.5), interval(-Inf, 0.0)) === Interval(-Inf, -0.0)

    @test pow_rev2(interval(0.0, Inf), interval(0.25, 0.5), interval(0.0, Inf)) === Interval(0.0, Inf)

    @test pow_rev2(interval(0.0, 2.0), interval(0.5, 1.0), entireinterval()) === entireinterval()

    @test_broken pow_rev2(interval(0.0, 2.0), interval(1.0, 1.0), entireinterval()) === entireinterval()

    @test pow_rev2(interval(0.0, 2.0), interval(0.5, 1.0), interval(-Inf, 0.0)) === Interval(-Inf, 0.0)

    @test_broken pow_rev2(interval(0.0, 2.0), interval(1.0, 1.0), interval(-Inf, 0.0)) === Interval(-Inf, 0.0)

    @test pow_rev2(interval(0.0, 2.0), interval(0.5, 1.0), interval(0.0, Inf)) === Interval(0.0, Inf)

    @test_broken pow_rev2(interval(0.0, 2.0), interval(1.0, 1.0), interval(0.0, Inf)) === Interval(0.0, Inf)

    @test pow_rev2(interval(0.0, Inf), interval(0.5, 1.0), entireinterval()) === entireinterval()

    @test_broken pow_rev2(interval(0.0, Inf), interval(1.0, 1.0), entireinterval()) === entireinterval()

    @test pow_rev2(interval(0.0, Inf), interval(0.5, 1.0), interval(-Inf, 0.0)) === Interval(-Inf, 0.0)

    @test_broken pow_rev2(interval(0.0, Inf), interval(1.0, 1.0), interval(-Inf, 0.0)) === Interval(-Inf, 0.0)

    @test pow_rev2(interval(0.0, Inf), interval(0.5, 1.0), interval(0.0, Inf)) === Interval(0.0, Inf)

    @test_broken pow_rev2(interval(0.0, Inf), interval(1.0, 1.0), interval(0.0, Inf)) === Interval(0.0, Inf)

    @test pow_rev2(interval(0.0, 2.0), interval(0.0, 1.0), entireinterval()) === entireinterval()

    @test pow_rev2(interval(0.0, 2.0), interval(0.0, 1.0), interval(-Inf, 0.0)) === Interval(-Inf, 0.0)

    @test pow_rev2(interval(0.0, 2.0), interval(0.0, 1.0), interval(0.0, Inf)) === Interval(0.0, Inf)

    @test pow_rev2(interval(0.0, Inf), interval(0.0, 1.0), entireinterval()) === entireinterval()

    @test pow_rev2(interval(0.0, Inf), interval(0.0, 1.0), interval(-Inf, 0.0)) === Interval(-Inf, 0.0)

    @test pow_rev2(interval(0.0, Inf), interval(0.0, 1.0), interval(0.0, Inf)) === Interval(0.0, Inf)

    @test pow_rev2(interval(0.0, 2.0), interval(0.0, 2.0), entireinterval()) === entireinterval()

    @test pow_rev2(interval(0.0, 2.0), interval(0.0, 2.0), interval(-Inf, 0.0)) === Interval(-Inf, 0.0)

    @test pow_rev2(interval(0.0, 2.0), interval(0.0, 2.0), interval(0.0, Inf)) === Interval(0.0, Inf)

    @test pow_rev2(interval(0.0, Inf), interval(0.0, 2.0), entireinterval()) === entireinterval()

    @test pow_rev2(interval(0.0, Inf), interval(0.0, 2.0), interval(-Inf, 0.0)) === Interval(-Inf, 0.0)

    @test pow_rev2(interval(0.0, Inf), interval(0.0, 2.0), interval(0.0, Inf)) === Interval(0.0, Inf)

    @test pow_rev2(interval(0.0, 2.0), interval(0.0, Inf), entireinterval()) === entireinterval()

    @test pow_rev2(interval(0.0, 2.0), interval(0.0, Inf), interval(-Inf, 0.0)) === Interval(-Inf, 0.0)

    @test pow_rev2(interval(0.0, 2.0), interval(0.0, Inf), interval(0.0, Inf)) === Interval(0.0, Inf)

    @test pow_rev2(interval(0.0, Inf), interval(0.0, Inf), entireinterval()) === entireinterval()

    @test pow_rev2(interval(0.0, Inf), interval(0.0, Inf), interval(-Inf, 0.0)) === Interval(-Inf, 0.0)

    @test pow_rev2(interval(0.0, Inf), interval(0.0, Inf), interval(0.0, Inf)) === Interval(0.0, Inf)

    @test pow_rev2(interval(0.0, 2.0), interval(0.5, 2.0), entireinterval()) === entireinterval()

    @test pow_rev2(interval(0.0, 2.0), interval(0.5, 2.0), interval(-Inf, 0.0)) === Interval(-Inf, 0.0)

    @test pow_rev2(interval(0.0, 2.0), interval(0.5, 2.0), interval(0.0, Inf)) === Interval(0.0, Inf)

    @test pow_rev2(interval(0.0, Inf), interval(0.5, 2.0), entireinterval()) === entireinterval()

    @test pow_rev2(interval(0.0, Inf), interval(0.5, 2.0), interval(-Inf, 0.0)) === Interval(-Inf, 0.0)

    @test pow_rev2(interval(0.0, Inf), interval(0.5, 2.0), interval(0.0, Inf)) === Interval(0.0, Inf)

    @test pow_rev2(interval(0.0, 2.0), interval(0.5, Inf), entireinterval()) === entireinterval()

    @test pow_rev2(interval(0.0, 2.0), interval(0.5, Inf), interval(-Inf, 0.0)) === Interval(-Inf, 0.0)

    @test pow_rev2(interval(0.0, 2.0), interval(0.5, Inf), interval(0.0, Inf)) === Interval(0.0, Inf)

    @test pow_rev2(interval(0.0, Inf), interval(0.5, Inf), entireinterval()) === entireinterval()

    @test pow_rev2(interval(0.0, Inf), interval(0.5, Inf), interval(-Inf, 0.0)) === Interval(-Inf, 0.0)

    @test pow_rev2(interval(0.0, Inf), interval(0.5, Inf), interval(0.0, Inf)) === Interval(0.0, Inf)

    @test pow_rev2(interval(0.0, 2.0), interval(1.0, 2.0), entireinterval()) === entireinterval()

    @test pow_rev2(interval(0.0, 2.0), interval(1.0, 2.0), interval(-Inf, 0.0)) === Interval(-Inf, 0.0)

    @test pow_rev2(interval(0.0, 2.0), interval(1.0, 2.0), interval(0.0, Inf)) === Interval(0.0, Inf)

    @test pow_rev2(interval(0.0, Inf), interval(1.0, 2.0), entireinterval()) === entireinterval()

    @test pow_rev2(interval(0.0, Inf), interval(1.0, 2.0), interval(-Inf, 0.0)) === Interval(-Inf, 0.0)

    @test pow_rev2(interval(0.0, Inf), interval(1.0, 2.0), interval(0.0, Inf)) === Interval(0.0, Inf)

    @test pow_rev2(interval(0.0, 2.0), interval(1.0, Inf), entireinterval()) === entireinterval()

    @test pow_rev2(interval(0.0, 2.0), interval(1.0, Inf), interval(-Inf, 0.0)) === Interval(-Inf, 0.0)

    @test pow_rev2(interval(0.0, 2.0), interval(1.0, Inf), interval(0.0, Inf)) === Interval(0.0, Inf)

    @test pow_rev2(interval(0.0, Inf), interval(1.0, Inf), entireinterval()) === entireinterval()

    @test pow_rev2(interval(0.0, Inf), interval(1.0, Inf), interval(-Inf, 0.0)) === Interval(-Inf, 0.0)

    @test pow_rev2(interval(0.0, Inf), interval(1.0, Inf), interval(0.0, Inf)) === Interval(0.0, Inf)

    @test pow_rev2(interval(0.0, 2.0), interval(2.0, 4.0), entireinterval()) === entireinterval()

    @test pow_rev2(interval(0.0, 2.0), interval(2.0, 4.0), interval(-Inf, 0.0)) === Interval(-Inf, 0.0)

    @test_broken pow_rev2(interval(0.0, 2.0), interval(2.0, 4.0), interval(0.0, Inf)) === Interval(1.0, Inf)

    @test pow_rev2(interval(0.0, Inf), interval(2.0, 4.0), entireinterval()) === entireinterval()

    @test pow_rev2(interval(0.0, Inf), interval(2.0, 4.0), interval(-Inf, 0.0)) === Interval(-Inf, 0.0)

    @test pow_rev2(interval(0.0, Inf), interval(2.0, 4.0), interval(0.0, Inf)) === Interval(0.0, Inf)

    @test pow_rev2(interval(0.0, 2.0), interval(2.0, Inf), entireinterval()) === entireinterval()

    @test pow_rev2(interval(0.0, 2.0), interval(2.0, Inf), interval(-Inf, 0.0)) === Interval(-Inf, 0.0)

    @test_broken pow_rev2(interval(0.0, 2.0), interval(2.0, Inf), interval(0.0, Inf)) === Interval(1.0, Inf)

    @test pow_rev2(interval(0.0, Inf), interval(2.0, Inf), entireinterval()) === entireinterval()

    @test pow_rev2(interval(0.0, Inf), interval(2.0, Inf), interval(-Inf, 0.0)) === Interval(-Inf, 0.0)

    @test pow_rev2(interval(0.0, Inf), interval(2.0, Inf), interval(0.0, Inf)) === Interval(0.0, Inf)

    @test pow_rev2(interval(0.5, 2.0), interval(0.0, 0.5), entireinterval()) === entireinterval()

    @test_broken pow_rev2(interval(0.5, 2.0), interval(0.0, 0.5), interval(-Inf, 0.0)) === Interval(-Inf, -1.0)

    @test_broken pow_rev2(interval(0.5, 2.0), interval(0.0, 0.5), interval(0.0, Inf)) === Interval(1.0, Inf)

    @test pow_rev2(interval(0.5, Inf), interval(0.0, 0.5), entireinterval()) === entireinterval()

    @test pow_rev2(interval(0.5, Inf), interval(0.0, 0.5), interval(-Inf, 0.0)) === Interval(-Inf, 0.0)

    @test_broken pow_rev2(interval(0.5, Inf), interval(0.0, 0.5), interval(0.0, Inf)) === Interval(1.0, Inf)

    @test pow_rev2(interval(0.5, 2.0), interval(0.25, 0.5), entireinterval()) === entireinterval()

    @test_broken pow_rev2(interval(0.5, 2.0), interval(0.25, 0.5), interval(-Inf, 0.0)) === Interval(-Inf, -1.0)

    @test_broken pow_rev2(interval(0.5, 2.0), interval(0.25, 0.5), interval(0.0, Inf)) === Interval(1.0, Inf)

    @test pow_rev2(interval(0.5, Inf), interval(0.25, 0.5), entireinterval()) === entireinterval()

    @test pow_rev2(interval(0.5, Inf), interval(0.25, 0.5), interval(-Inf, 0.0)) === Interval(-Inf, 0.0)

    @test_broken pow_rev2(interval(0.5, Inf), interval(0.25, 0.5), interval(0.0, Inf)) === Interval(1.0, Inf)

    @test pow_rev2(interval(0.5, 2.0), interval(0.5, 1.0), entireinterval()) === entireinterval()

    @test_broken pow_rev2(interval(0.5, 2.0), interval(1.0, 1.0), entireinterval()) === entireinterval()

    @test pow_rev2(interval(0.5, 2.0), interval(0.5, 1.0), interval(-Inf, 0.0)) === Interval(-Inf, 0.0)

    @test_broken pow_rev2(interval(0.5, 2.0), interval(1.0, 1.0), interval(-Inf, 0.0)) === Interval(-Inf, 0.0)

    @test pow_rev2(interval(0.5, 2.0), interval(0.5, 1.0), interval(0.0, Inf)) === Interval(0.0, Inf)

    @test_broken pow_rev2(interval(0.5, 2.0), interval(1.0, 1.0), interval(0.0, Inf)) === Interval(0.0, Inf)

    @test pow_rev2(interval(0.5, Inf), interval(0.5, 1.0), entireinterval()) === entireinterval()

    @test_broken pow_rev2(interval(0.5, Inf), interval(1.0, 1.0), entireinterval()) === entireinterval()

    @test pow_rev2(interval(0.5, Inf), interval(0.5, 1.0), interval(-Inf, 0.0)) === Interval(-Inf, 0.0)

    @test_broken pow_rev2(interval(0.5, Inf), interval(1.0, 1.0), interval(-Inf, 0.0)) === Interval(-Inf, 0.0)

    @test pow_rev2(interval(0.5, Inf), interval(0.5, 1.0), interval(0.0, Inf)) === Interval(0.0, Inf)

    @test_broken pow_rev2(interval(0.5, Inf), interval(1.0, 1.0), interval(0.0, Inf)) === Interval(0.0, Inf)

    @test pow_rev2(interval(0.5, 2.0), interval(0.0, 1.0), entireinterval()) === entireinterval()

    @test pow_rev2(interval(0.5, 2.0), interval(0.0, 1.0), interval(-Inf, 0.0)) === Interval(-Inf, 0.0)

    @test pow_rev2(interval(0.5, 2.0), interval(0.0, 1.0), interval(0.0, Inf)) === Interval(0.0, Inf)

    @test pow_rev2(interval(0.5, Inf), interval(0.0, 1.0), entireinterval()) === entireinterval()

    @test pow_rev2(interval(0.5, Inf), interval(0.0, 1.0), interval(-Inf, 0.0)) === Interval(-Inf, 0.0)

    @test pow_rev2(interval(0.5, Inf), interval(0.0, 1.0), interval(0.0, Inf)) === Interval(0.0, Inf)

    @test pow_rev2(interval(0.5, 2.0), interval(0.0, 2.0), entireinterval()) === entireinterval()

    @test pow_rev2(interval(0.5, 2.0), interval(0.0, 2.0), interval(-Inf, 0.0)) === Interval(-Inf, 0.0)

    @test pow_rev2(interval(0.5, 2.0), interval(0.0, 2.0), interval(0.0, Inf)) === Interval(0.0, Inf)

    @test pow_rev2(interval(0.5, Inf), interval(0.0, 2.0), entireinterval()) === entireinterval()

    @test pow_rev2(interval(0.5, Inf), interval(0.0, 2.0), interval(-Inf, 0.0)) === Interval(-Inf, 0.0)

    @test pow_rev2(interval(0.5, Inf), interval(0.0, 2.0), interval(0.0, Inf)) === Interval(0.0, Inf)

    @test pow_rev2(interval(0.5, 2.0), interval(0.0, Inf), entireinterval()) === entireinterval()

    @test pow_rev2(interval(0.5, 2.0), interval(0.0, Inf), interval(-Inf, 0.0)) === Interval(-Inf, 0.0)

    @test pow_rev2(interval(0.5, 2.0), interval(0.0, Inf), interval(0.0, Inf)) === Interval(0.0, Inf)

    @test pow_rev2(interval(0.5, Inf), interval(0.0, Inf), entireinterval()) === entireinterval()

    @test pow_rev2(interval(0.5, Inf), interval(0.0, Inf), interval(-Inf, 0.0)) === Interval(-Inf, 0.0)

    @test pow_rev2(interval(0.5, Inf), interval(0.0, Inf), interval(0.0, Inf)) === Interval(0.0, Inf)

    @test pow_rev2(interval(0.5, 2.0), interval(0.5, 2.0), entireinterval()) === entireinterval()

    @test pow_rev2(interval(0.5, 2.0), interval(0.5, 2.0), interval(-Inf, 0.0)) === Interval(-Inf, 0.0)

    @test pow_rev2(interval(0.5, 2.0), interval(0.5, 2.0), interval(0.0, Inf)) === Interval(0.0, Inf)

    @test pow_rev2(interval(0.5, Inf), interval(0.5, 2.0), entireinterval()) === entireinterval()

    @test pow_rev2(interval(0.5, Inf), interval(0.5, 2.0), interval(-Inf, 0.0)) === Interval(-Inf, 0.0)

    @test pow_rev2(interval(0.5, Inf), interval(0.5, 2.0), interval(0.0, Inf)) === Interval(0.0, Inf)

    @test pow_rev2(interval(0.5, 2.0), interval(0.5, Inf), entireinterval()) === entireinterval()

    @test pow_rev2(interval(0.5, 2.0), interval(0.5, Inf), interval(-Inf, 0.0)) === Interval(-Inf, 0.0)

    @test pow_rev2(interval(0.5, 2.0), interval(0.5, Inf), interval(0.0, Inf)) === Interval(0.0, Inf)

    @test pow_rev2(interval(0.5, Inf), interval(0.5, Inf), entireinterval()) === entireinterval()

    @test pow_rev2(interval(0.5, Inf), interval(0.5, Inf), interval(-Inf, 0.0)) === Interval(-Inf, 0.0)

    @test pow_rev2(interval(0.5, Inf), interval(0.5, Inf), interval(0.0, Inf)) === Interval(0.0, Inf)

    @test pow_rev2(interval(0.5, 2.0), interval(1.0, 2.0), entireinterval()) === entireinterval()

    @test pow_rev2(interval(0.5, 2.0), interval(1.0, 2.0), interval(-Inf, 0.0)) === Interval(-Inf, 0.0)

    @test pow_rev2(interval(0.5, 2.0), interval(1.0, 2.0), interval(0.0, Inf)) === Interval(0.0, Inf)

    @test pow_rev2(interval(0.5, Inf), interval(1.0, 2.0), entireinterval()) === entireinterval()

    @test pow_rev2(interval(0.5, Inf), interval(1.0, 2.0), interval(-Inf, 0.0)) === Interval(-Inf, 0.0)

    @test pow_rev2(interval(0.5, Inf), interval(1.0, 2.0), interval(0.0, Inf)) === Interval(0.0, Inf)

    @test pow_rev2(interval(0.5, 2.0), interval(1.0, Inf), entireinterval()) === entireinterval()

    @test pow_rev2(interval(0.5, 2.0), interval(1.0, Inf), interval(-Inf, 0.0)) === Interval(-Inf, 0.0)

    @test pow_rev2(interval(0.5, 2.0), interval(1.0, Inf), interval(0.0, Inf)) === Interval(0.0, Inf)

    @test pow_rev2(interval(0.5, Inf), interval(1.0, Inf), entireinterval()) === entireinterval()

    @test pow_rev2(interval(0.5, Inf), interval(1.0, Inf), interval(-Inf, 0.0)) === Interval(-Inf, 0.0)

    @test pow_rev2(interval(0.5, Inf), interval(1.0, Inf), interval(0.0, Inf)) === Interval(0.0, Inf)

    @test pow_rev2(interval(0.5, 2.0), interval(2.0, 4.0), entireinterval()) === entireinterval()

    @test_broken pow_rev2(interval(0.5, 2.0), interval(2.0, 4.0), interval(-Inf, 0.0)) === Interval(-Inf, -1.0)

    @test_broken pow_rev2(interval(0.5, 2.0), interval(2.0, 4.0), interval(0.0, Inf)) === Interval(1.0, Inf)

    @test pow_rev2(interval(0.5, Inf), interval(2.0, 4.0), entireinterval()) === entireinterval()

    @test_broken pow_rev2(interval(0.5, Inf), interval(2.0, 4.0), interval(-Inf, 0.0)) === Interval(-Inf, -1.0)

    @test pow_rev2(interval(0.5, Inf), interval(2.0, 4.0), interval(0.0, Inf)) === Interval(0.0, Inf)

    @test_broken pow_rev2(interval(1.0, 2.0), interval(0.0, 0.5), entireinterval()) === Interval(-Inf, -1.0)

    @test_broken pow_rev2(interval(1.0, 2.0), interval(0.0, 0.5), interval(-Inf, 0.0)) === Interval(-Inf, -1.0)

    @test pow_rev2(interval(1.0, 2.0), interval(0.0, 0.5), interval(0.0, Inf)) === emptyinterval()

    @test pow_rev2(interval(1.0, Inf), interval(0.0, 0.5), entireinterval()) === Interval(-Inf, 0.0)

    @test pow_rev2(interval(1.0, Inf), interval(0.0, 0.5), interval(-Inf, 0.0)) === Interval(-Inf, 0.0)

    @test_broken pow_rev2(interval(1.0, Inf), interval(0.0, 0.5), interval(0.0, Inf)) === emptyinterval()

    @test_broken pow_rev2(interval(1.0, 2.0), interval(0.25, 0.5), entireinterval()) === Interval(-Inf, -1.0)

    @test_broken pow_rev2(interval(1.0, 2.0), interval(0.25, 0.5), interval(-Inf, 0.0)) === Interval(-Inf, -1.0)

    @test pow_rev2(interval(1.0, 2.0), interval(0.25, 0.5), interval(0.0, Inf)) === emptyinterval()

    @test pow_rev2(interval(1.0, Inf), interval(0.25, 0.5), entireinterval()) === Interval(-Inf, 0.0)

    @test pow_rev2(interval(1.0, Inf), interval(0.25, 0.5), interval(-Inf, 0.0)) === Interval(-Inf, 0.0)

    @test_broken pow_rev2(interval(1.0, Inf), interval(0.25, 0.5), interval(0.0, Inf)) === emptyinterval()

    @test_broken pow_rev2(interval(1.0, 2.0), interval(0.5, 1.0), entireinterval()) === entireinterval()

    @test_broken pow_rev2(interval(1.0, 2.0), interval(1.0, 1.0), entireinterval()) === entireinterval()

    @test pow_rev2(interval(1.0, 2.0), interval(0.5, 1.0), interval(-Inf, 0.0)) === Interval(-Inf, 0.0)

    @test_broken pow_rev2(interval(1.0, 2.0), interval(1.0, 1.0), interval(-Inf, 0.0)) === Interval(-Inf, 0.0)

    @test_broken pow_rev2(interval(1.0, 2.0), interval(0.5, 1.0), interval(0.0, Inf)) === Interval(0.0, Inf)

    @test_broken pow_rev2(interval(1.0, 2.0), interval(1.0, 1.0), interval(0.0, Inf)) === Interval(0.0, Inf)

    @test_broken pow_rev2(interval(1.0, Inf), interval(0.5, 1.0), entireinterval()) === entireinterval()

    @test_broken pow_rev2(interval(1.0, Inf), interval(1.0, 1.0), entireinterval()) === entireinterval()

    @test pow_rev2(interval(1.0, Inf), interval(0.5, 1.0), interval(-Inf, 0.0)) === Interval(-Inf, 0.0)

    @test_broken pow_rev2(interval(1.0, Inf), interval(1.0, 1.0), interval(-Inf, 0.0)) === Interval(-Inf, 0.0)

    @test_broken pow_rev2(interval(1.0, Inf), interval(0.5, 1.0), interval(0.0, Inf)) === Interval(0.0, Inf)

    @test_broken pow_rev2(interval(1.0, Inf), interval(1.0, 1.0), interval(0.0, Inf)) === Interval(0.0, Inf)

    @test_broken pow_rev2(interval(1.0, 2.0), interval(0.0, 1.0), entireinterval()) === entireinterval()

    @test pow_rev2(interval(1.0, 2.0), interval(0.0, 1.0), interval(-Inf, 0.0)) === Interval(-Inf, 0.0)

    @test_broken pow_rev2(interval(1.0, 2.0), interval(0.0, 1.0), interval(0.0, Inf)) === Interval(0.0, Inf)

    @test_broken pow_rev2(interval(1.0, Inf), interval(0.0, 1.0), entireinterval()) === entireinterval()

    @test pow_rev2(interval(1.0, Inf), interval(0.0, 1.0), interval(-Inf, 0.0)) === Interval(-Inf, 0.0)

    @test_broken pow_rev2(interval(1.0, Inf), interval(0.0, 1.0), interval(0.0, Inf)) === Interval(0.0, Inf)

    @test pow_rev2(interval(1.0, 2.0), interval(0.0, 2.0), entireinterval()) === entireinterval()

    @test pow_rev2(interval(1.0, 2.0), interval(0.0, 2.0), interval(-Inf, 0.0)) === Interval(-Inf, 0.0)

    @test pow_rev2(interval(1.0, 2.0), interval(0.0, 2.0), interval(0.0, Inf)) === Interval(0.0, Inf)

    @test pow_rev2(interval(1.0, Inf), interval(0.0, 2.0), entireinterval()) === entireinterval()

    @test pow_rev2(interval(1.0, Inf), interval(0.0, 2.0), interval(-Inf, 0.0)) === Interval(-Inf, 0.0)

    @test pow_rev2(interval(1.0, Inf), interval(0.0, 2.0), interval(0.0, Inf)) === Interval(0.0, Inf)

    @test pow_rev2(interval(1.0, 2.0), interval(0.0, Inf), entireinterval()) === entireinterval()

    @test pow_rev2(interval(1.0, 2.0), interval(0.0, Inf), interval(-Inf, 0.0)) === Interval(-Inf, 0.0)

    @test pow_rev2(interval(1.0, 2.0), interval(0.0, Inf), interval(0.0, Inf)) === Interval(0.0, Inf)

    @test pow_rev2(interval(1.0, Inf), interval(0.0, Inf), entireinterval()) === entireinterval()

    @test pow_rev2(interval(1.0, Inf), interval(0.0, Inf), interval(-Inf, 0.0)) === Interval(-Inf, 0.0)

    @test pow_rev2(interval(1.0, Inf), interval(0.0, Inf), interval(0.0, Inf)) === Interval(0.0, Inf)

    @test pow_rev2(interval(1.0, 2.0), interval(0.5, 2.0), entireinterval()) === entireinterval()

    @test pow_rev2(interval(1.0, 2.0), interval(0.5, 2.0), interval(-Inf, 0.0)) === Interval(-Inf, 0.0)

    @test pow_rev2(interval(1.0, 2.0), interval(0.5, 2.0), interval(0.0, Inf)) === Interval(0.0, Inf)

    @test pow_rev2(interval(1.0, Inf), interval(0.5, 2.0), entireinterval()) === entireinterval()

    @test pow_rev2(interval(1.0, Inf), interval(0.5, 2.0), interval(-Inf, 0.0)) === Interval(-Inf, 0.0)

    @test pow_rev2(interval(1.0, Inf), interval(0.5, 2.0), interval(0.0, Inf)) === Interval(0.0, Inf)

    @test pow_rev2(interval(1.0, 2.0), interval(0.5, Inf), entireinterval()) === entireinterval()

    @test pow_rev2(interval(1.0, 2.0), interval(0.5, Inf), interval(-Inf, 0.0)) === Interval(-Inf, 0.0)

    @test pow_rev2(interval(1.0, 2.0), interval(0.5, Inf), interval(0.0, Inf)) === Interval(0.0, Inf)

    @test pow_rev2(interval(1.0, Inf), interval(0.5, Inf), entireinterval()) === entireinterval()

    @test pow_rev2(interval(1.0, Inf), interval(0.5, Inf), interval(-Inf, 0.0)) === Interval(-Inf, 0.0)

    @test pow_rev2(interval(1.0, Inf), interval(0.5, Inf), interval(0.0, Inf)) === Interval(0.0, Inf)

    @test_broken pow_rev2(interval(1.0, 2.0), interval(1.0, 2.0), entireinterval()) === entireinterval()

    @test_broken pow_rev2(interval(1.0, 2.0), interval(1.0, Inf), entireinterval()) === entireinterval()

    @test_broken pow_rev2(interval(1.0, Inf), interval(1.0, Inf), entireinterval()) === entireinterval()

    @test_broken pow_rev2(interval(1.0, Inf), interval(1.0, 2.0), entireinterval()) === entireinterval()

    @test_broken pow_rev2(interval(1.0, 2.0), interval(1.0, 2.0), interval(-Inf, 0.0)) === Interval(-Inf, 0.0)

    @test_broken pow_rev2(interval(1.0, Inf), interval(1.0, 2.0), interval(-Inf, 0.0)) === Interval(-Inf, 0.0)

    @test pow_rev2(interval(1.0, 2.0), interval(1.0, 2.0), interval(0.0, Inf)) === Interval(0.0, Inf)

    @test pow_rev2(interval(1.0, Inf), interval(1.0, 2.0), interval(0.0, Inf)) === Interval(0.0, Inf)

    @test_broken pow_rev2(interval(1.0, 2.0), interval(2.0, 4.0), entireinterval()) === Interval(1.0, Inf)

    @test pow_rev2(interval(1.0, Inf), interval(2.0, 4.0), entireinterval()) === Interval(0.0, Inf)

    @test pow_rev2(interval(1.0, 2.0), interval(2.0, 4.0), interval(-Inf, 0.0)) === emptyinterval()

    @test_broken pow_rev2(interval(1.0, Inf), interval(2.0, 4.0), interval(-Inf, 0.0)) === emptyinterval()

    @test_broken pow_rev2(interval(1.0, 2.0), interval(2.0, 4.0), interval(0.0, Inf)) === Interval(1.0, Inf)

    @test pow_rev2(interval(1.0, Inf), interval(2.0, 4.0), interval(0.0, Inf)) === Interval(0.0, Inf)

    @test_broken pow_rev2(interval(2.0, 4.0), interval(0.0, 0.5), entireinterval()) === Interval(-Inf, -0.5)

    @test pow_rev2(interval(2.0, Inf), interval(0.0, 0.5), entireinterval()) === Interval(-Inf, 0.0)

    @test_broken pow_rev2(interval(2.0, Inf), interval(0.0, 0.5), interval(0.0, Inf)) === emptyinterval()

    @test_broken pow_rev2(interval(2.0, 4.0), interval(0.25, 0.5), entireinterval()) === Interval(-2.0, -0.5)

    @test_broken pow_rev2(interval(2.0, Inf), interval(0.25, 0.5), entireinterval()) === Interval(-2.0, 0.0)

    @test_broken pow_rev2(interval(2.0, Inf), interval(0.25, 0.5), interval(0.0, Inf)) === emptyinterval()

    @test_broken pow_rev2(interval(2.0, 4.0), interval(0.5, 1.0), entireinterval()) === Interval(-1.0, 0.0)

    @test_broken pow_rev2(interval(2.0, Inf), interval(0.5, 1.0), entireinterval()) === Interval(-1.0, 0.0)

    @test pow_rev2(interval(2.0, 4.0), interval(1.0, 1.0), entireinterval()) === Interval(0.0, 0.0)

    @test pow_rev2(interval(2.0, Inf), interval(1.0, 1.0), entireinterval()) === Interval(0.0, 0.0)

    @test pow_rev2(interval(2.0, 4.0), interval(0.0, 1.0), entireinterval()) === Interval(-Inf, 0.0)

    @test pow_rev2(interval(2.0, Inf), interval(0.0, 1.0), entireinterval()) === Interval(-Inf, 0.0)

    @test pow_rev2(interval(2.0, 4.0), interval(0.0, 1.0), interval(0.0, Inf)) === Interval(0.0, 0.0)

    @test pow_rev2(interval(2.0, Inf), interval(0.0, 1.0), interval(0.0, Inf)) === Interval(0.0, 0.0)

    @test_broken pow_rev2(interval(2.0, 4.0), interval(0.0, 2.0), entireinterval()) === Interval(-Inf, 1.0)

    @test_broken pow_rev2(interval(2.0, Inf), interval(0.0, 2.0), entireinterval()) === Interval(-Inf, 1.0)

    @test_broken pow_rev2(interval(2.0, 4.0), interval(0.5, 2.0), entireinterval()) === Interval(-1.0, 1.0)

    @test_broken pow_rev2(interval(2.0, Inf), interval(0.5, 2.0), entireinterval()) === Interval(-1.0, 1.0)

    @test_broken pow_rev2(interval(2.0, 4.0), interval(1.0, 2.0), entireinterval()) === Interval(0.0, 1.0)

    @test_broken pow_rev2(interval(2.0, Inf), interval(1.0, 2.0), entireinterval()) === Interval(0.0, 1.0)

    @test pow_rev2(interval(2.0, 4.0), interval(1.0, 2.0), interval(-Inf, 0.0)) === Interval(0.0, 0.0)

    @test pow_rev2(interval(2.0, Inf), interval(1.0, 2.0), interval(-Inf, 0.0)) === Interval(0.0, 0.0)

    @test_broken pow_rev2(interval(2.0, 4.0), interval(2.0, 4.0), entireinterval()) === Interval(0.5, 2.0)

    @test_broken pow_rev2(interval(2.0, Inf), interval(2.0, 4.0), entireinterval()) === Interval(0.0, 2.0)

    @test_broken pow_rev2(interval(2.0, Inf), interval(2.0, 4.0), interval(-Inf, 0.0)) === emptyinterval()

    @test_broken pow_rev2(interval(2.0, 4.0), interval(2.0, Inf), entireinterval()) === Interval(0.5, Inf)

    @test pow_rev2(interval(2.0, Inf), interval(2.0, Inf), entireinterval()) === Interval(0.0, Inf)

    @test_broken pow_rev2(interval(2.0, Inf), interval(2.0, Inf), interval(-Inf, 0.0)) === emptyinterval()

end


text:
# Unit tests for judiWeights
# Rafael Orozco (rorozco@gatech.edu)
# July 2021
#
# Mathias Louboutin, mlouboutin3@gatech.edu
# Updated July 2020

# number of sources/receivers
nrec = 120
weight_size_x = 4
weight_size_y = 4
ftol = 1f-6

################################################# test constructors ####################################################

@testset "judiWeights Unit Tests with $(nsrc) sources" for nsrc=[1, 2]

    # set up judiWeights

    # Extended source weights
    w = judiWeights([randn(Float64,weight_size_x,weight_size_y) for i = 1:nsrc])

    @test isequal(w.nsrc, nsrc)
    @test isequal(typeof(w.weights), Array{Array{Float32,2},1})
    @test isequal(size(w), (weight_size_x*weight_size_y*nsrc, 1))
    @test isfinite(w)

    w_cell = judiWeights(convertToCell([randn(Float32,weight_size_x,weight_size_y) for i = 1:nsrc]))

    @test isequal(w_cell.nsrc, nsrc)
    @test isequal(typeof(w_cell.weights), Array{Array{Float32, 2},1})
    @test isequal(size(w_cell), (weight_size_x*weight_size_y*nsrc, 1))
    @test isfinite(w_cell)

    w_multi = judiWeights(randn(Float64,weight_size_x,weight_size_y); nsrc=3)

    @test isequal(w_multi.nsrc, 3)
    @test isequal(typeof(w_multi.weights), Array{Array{Float32, 2},1})
    @test isequal(size(w_multi), (weight_size_x*weight_size_y*3, 1))
    @test isfinite(w_multi)
    @test isapprox(w_multi[1],w_multi[2])
    @test isapprox(w_multi[2],w_multi[3])

    w_type = judiWeights([randn(Float32,weight_size_x,weight_size_y) for i = 1:nsrc];vDT=Float64)

    @test isequal(w_type.nsrc, nsrc)
    @test isequal(typeof(w_type.weights), Array{Array{Float64,2},1})
    @test isequal(size(w_type), (weight_size_x*weight_size_y*nsrc, 1))
    @test isfinite(w_type)

    I2 = ones(Float32, 1, size(w, 1))
    w2 = I2*w
    @test isapprox(w2[1], sum(sum(w.weights)))

    I2 = joOnes(1, size(w, 1); DDT=Float32, RDT=Float32)
    w2 = I2*w
    @test isapprox(w2[1], sum(sum(w.weights)))

    I3 = [I2;I2]
    w3 = I3*w
    @test isapprox(w3[1], sum(sum(w.weights)))
    @test isapprox(w3[2], sum(sum(w.weights)))

#################################################### test operations ###################################################
    # Indexing/reshape/...
    @test isapprox(w[1].weights[1], w.weights[1])
    @test isapprox(subsample(w, 1).weights[1], w.weights[1])

    # conj, transpose, adjoint
    @test isequal(size(w), size(conj(w)))
    @test isequal(reverse(size(w)), size(transpose(w)))
    @test isequal(reverse(size(w)), size(adjoint(w)))

    # +, -, *, /
    @test iszero(norm(2*w - (w + w)))
    @test iszero(norm(w - (w + w)/2))

    #test unary operator
    @test iszero(norm((-w) - (-1*w)))

    # Copies and iter utilities
    w2 = copy(w)
    @test isequal(w2.weights, w.weights)
    @test isequal(w2.nsrc, w.nsrc)
    @test firstindex(w) == 1
    @test lastindex(w) == nsrc
    @test ndims(w) == 2

    w2 = similar(w, Float32, 1:2)
    @test isequal(w2.weights, 0f0.* w.weights)
    @test isequal(w2.nsrc, w.nsrc)
    @test firstindex(w) == 1
    @test lastindex(w) == nsrc
    @test ndims(w) == 2

    copy!(w2, w)
    @test isequal(w2.weights, w.weights)
    @test isequal(w2.nsrc, w.nsrc)
    @test firstindex(w) == 1
    @test lastindex(w) == nsrc
    @test ndims(w) == 2

    # vcat
    w_vcat = [w; w]
    @test isequal(length(w_vcat), 2*length(w))
    @test isequal(w_vcat.nsrc, 2*w.nsrc)

    # dot, norm, abs
    @test isapprox(norm(w), sqrt(dot(w, w)))
    @test isapprox(abs.(w.weights[1]), abs(w).weights[1])

    # max, min
    w_max_min = judiWeights([ones(Float32,weight_size_x,weight_size_y) for i = 1:nsrc])
    w_max_min.weights[1][1,1] = 1f3
    w_max_min.weights[nsrc][end,end] = 1f-3
    @test isapprox(maximum(w_max_min),1f3)
    @test isapprox(minimum(w_max_min),1f-3)

    # Test the norm
    d_ones = judiWeights(2f0 .* ones(Float32, weight_size_x, weight_size_y); nsrc=nsrc)
    @test isapprox(norm(d_ones, 2), sqrt(nsrc*weight_size_x*weight_size_y*4))
    @test isapprox(norm(d_ones, 2), sqrt(dot(d_ones, d_ones)))
    @test isapprox(norm(d_ones, 1), nsrc*weight_size_x*weight_size_y*2)
    @test isapprox(norm(d_ones, Inf), 2)

    # vector space axioms
    u = judiWeights(randn(Float32, weight_size_x, weight_size_y); nsrc=nsrc)
    v = judiWeights(randn(Float32, weight_size_x, weight_size_y); nsrc=nsrc)
    w = judiWeights(randn(Float32, weight_size_x, weight_size_y); nsrc=nsrc)
    a = .5f0 + rand(Float32)
    b = .5f0 + rand(Float32)

    @test isapprox(u + (v + w), (u + v) + w; rtol=ftol)
    @test isapprox(u + v, v + u; rtol=ftol)
    @test isapprox(u, u + 0; rtol=ftol)
    @test iszero(norm(u + u*(-1)))
    @test isapprox(-u, (-1f0)*u; rtol=ftol)
    @test isapprox(a .* (b .* u), (a * b) .* u; rtol=ftol)
    @test isapprox(u, u .* 1; rtol=ftol)
    @test isapprox(a .* (u + v), a .* u + a .* v; rtol=1f-5)
    @test isapprox((a + b) .* v, a .* v + b.* v; rtol=1f-5)

    # broadcast multiplication
    u = judiWeights(randn(Float32, weight_size_x, weight_size_y); nsrc=nsrc)
    v = judiWeights(randn(Float32, weight_size_x, weight_size_y); nsrc=nsrc)
    u_scale = deepcopy(u)
    v_scale = deepcopy(v)

    u_scale .*= 2f0
    @test isapprox(u_scale, 2f0 * u; rtol=ftol)
    v_scale .+= 2f0
    @test isapprox(v_scale, 2f0 + v; rtol=ftol)
    u_scale ./= 2f0
    @test isapprox(u_scale, u; rtol=ftol)
    u_scale .= 2f0 .* u_scale .+ v_scale
    @test isapprox(u_scale, 2f0 * u + 2f0 + v; rtol=ftol)
    u_scale .= u .+ v
    @test isapprox(u_scale, u + v)
    u_scale .= u .- v
    @test isapprox(u_scale, u - v)
    u_scale .= u .* v
    @test isapprox(u_scale.weights[1], u.weights[1].*v.weights[1])
    u_scale .= u ./ v
    @test isapprox(u_scale.weights[1], u.weights[1]./v.weights[1])

    # Test copies/similar
    w1 = deepcopy(w)
    @test isapprox(w1, w)
    w1 = similar(w)
    @test w1.nsrc == w.nsrc
    @test isapprox(w1.weights, 0f0 .* w.weights)
    w1 .= w
    @test w1.nsrc == w.nsrc
    @test isapprox(w1.weights, w.weights)

end

ext: jl

max_stars_repo_name: nogueirapeterson/JUDI

max_issues_repo_name: nogueirapeterson/JUDI

max_forks_repo_name: nogueirapeterson/JUDI


text:
function run!(model::elmod3d)

 path="/home/lzh/Dropbox/Zhenhua/Ongoing/Seisimu/deps/builds/el3d_openmp.so"
  ccall((:el3d_openmp,path),
  Void,
  (Ptr{Cdouble}, Cint, Cint, Cint, Ptr{Cdouble}, Ptr{Cdouble}, Ptr{Cdouble},
   Ptr{Cdouble}, Cint, Cint, Cint, Ptr{Cdouble}, Ptr{Cdouble}, Ptr{Cdouble},
   Ptr{Cdouble}, Cint, Cint, Cint, Ptr{Cdouble}, Ptr{Cdouble}, Ptr{Cdouble},
   Ptr{Cdouble}, Ptr{Cdouble}, Ptr{Cdouble}, Ptr{Cdouble},
   Ptr{Cdouble}, Ptr{Cdouble}, Ptr{Cdouble}, Ptr{Cdouble},
   Ptr{Cdouble}, Ptr{Cdouble}, Ptr{Cdouble}, Ptr{Cdouble},
   Cint, Cint, Cint,
   Ptr{Cdouble}, Cint, Cint, Cint, Ptr{Cdouble}, Ptr{Cdouble},
   Ptr{Cdouble}, Cint, Cint, Cint, Ptr{Cdouble}, Ptr{Cdouble},
   Ptr{Cdouble}, Cint, Cint, Cint, Ptr{Cdouble}, Ptr{Cdouble},
   Ptr{Cdouble}, Ptr{Cdouble}, Ptr{Cdouble}, Ptr{Cdouble},
   Cdouble, Cdouble, Cdouble, Cdouble, Cint,
   Ptr{Cdouble}, Ptr{Cdouble}, Ptr{Cdouble}, Ptr{Cdouble}),
   model.wf.vx, model.nwf.BDnvx[2], model.nwf.BDnvx[3], model.nwf.BDnvx[1],
   model.pml.PVxBTxx, model.pml.PVxBTxy, model.pml.PVxBTxz,
   model.wf.vy, model.nwf.BDnvy[2], model.nwf.BDnvy[3], model.nwf.BDnvy[1],
   model.pml.PVyBTxy, model.pml.PVyBTyy, model.pml.PVyBTyz,
   model.wf.vz, model.nwf.BDnvz[2], model.nwf.BDnvz[3], model.nwf.BDnvz[1],
   model.pml.PVzBTxz, model.pml.PVzBTyz, model.pml.PVzBTzz,
   model.wf.txx, model.pml.PTxxBVx, model.pml.PTxxBVy, model.pml.PTxxBVz,
   model.wf.tyy, model.pml.PTyyBVx, model.pml.PTyyBVy, model.pml.PTyyBVz,
   model.wf.tzz, model.pml.PTzzBVx, model.pml.PTzzBVy, model.pml.PTzzBVz,
   model.nwf.BDntpp[2], model.nwf.BDntpp[3], model.nwf.BDntpp[1],
   model.wf.txy, model.nwf.BDntxy[2], model.nwf.BDntxy[3], model.nwf.BDntxy[1],
   model.pml.PTxyBVx, model.pml.PTxyBVy,
   model.wf.tyz, model.nwf.BDntyz[2], model.nwf.BDntyz[3], model.nwf.BDntyz[1],
   model.pml.PTyzBVy, model.pml.PTyzBVz,
   model.wf.txz, model.nwf.BDntxz[2], model.nwf.BDntxz[3], model.nwf.BDntxz[1],
   model.pml.PTxzBVx, model.pml.PTxzBVz,
   model.medium.rho, model.medium.lambda, model.medium.mu, model.fdc,
   model.medium.dt, model.medium.dx, model.medium.dy, model.medium.dz, model.medium.ext,
   model.pml.bhalf, model.pml.ahalf, model.pml.bfull, model.pml.afull)
end

function run!(model::acmod3d)

 path="/home/lzh/Dropbox/Zhenhua/Ongoing/Seisimu/deps/builds/ac3d_openmp.so"

 ccall((:ac3d_openmp,path),
 Void,
 (Ptr{Cdouble}, Cint, Cint, Cint, Ptr{Cdouble},
  Ptr{Cdouble}, Cint, Cint, Cint, Ptr{Cdouble},
  Ptr{Cdouble}, Cint, Cint, Cint, Ptr{Cdouble},
  Ptr{Cdouble}, Ptr{Cdouble}, Ptr{Cdouble}, Ptr{Cdouble},
  Cint, Cint, Cint,
  Ptr{Cdouble}, Ptr{Cdouble}, Ptr{Cdouble},
  Cdouble, Cdouble, Cdouble, Cdouble, Cint,
  Ptr{Cdouble}, Ptr{Cdouble}, Ptr{Cdouble}, Ptr{Cdouble}),
  model.wf.vx, model.nwf.BDnvx[2], model.nwf.BDnvx[3], model.nwf.BDnvx[1],
  model.pml.PVxBTpp,
  model.wf.vy, model.nwf.BDnvy[2], model.nwf.BDnvy[3], model.nwf.BDnvy[1],
  model.pml.PVyBTpp,
  model.wf.vz, model.nwf.BDnvz[2], model.nwf.BDnvz[3], model.nwf.BDnvz[1],
  model.pml.PVzBTpp,
  model.wf.tpp, model.pml.PTppBVx, model.pml.PTppBVy, model.pml.PTppBVz,
  model.nwf.BDntpp[2], model.nwf.BDntpp[3], model.nwf.BDntpp[1],
  model.medium.rho, model.medium.lambda, model.fdc,
  model.medium.dt, model.medium.dx, model.medium.dy, model.medium.dz, model.medium.ext,
  model.pml.bhalf, model.pml.ahalf, model.pml.bfull, model.pml.afull)
end

function run!(model::elmod2d)

 path="/home/lzh/Dropbox/Zhenhua/Ongoing/Seisimu/deps/builds/el2d_openmp.so"

 ccall((:el2d_openmp,path),
 Void,
 (Ptr{Cdouble}, Cint, Cint, Ptr{Cdouble}, Ptr{Cdouble},
  Ptr{Cdouble}, Cint, Cint, Ptr{Cdouble}, Ptr{Cdouble},
  Ptr{Cdouble}, Ptr{Cdouble}, Ptr{Cdouble},
  Ptr{Cdouble}, Ptr{Cdouble}, Ptr{Cdouble},
  Cint, Cint,
  Ptr{Cdouble}, Cint, Cint, Ptr{Cdouble}, Ptr{Cdouble},
  Ptr{Cdouble}, Ptr{Cdouble}, Ptr{Cdouble}, Ptr{Cdouble},
  Cdouble, Cdouble, Cdouble, Cint,
  Ptr{Cdouble}, Ptr{Cdouble}, Ptr{Cdouble}, Ptr{Cdouble}),
  model.wf.vx, model.nwf.BDnvx[2], model.nwf.BDnvx[1],
  model.pml.PVxBTxx, model.pml.PVxBTxz,
  model.wf.vz, model.nwf.BDnvz[2], model.nwf.BDnvz[1],
  model.pml.PVzBTxz, model.pml.PVzBTzz,
  model.wf.txx, model.pml.PTxxBVx, model.pml.PTxxBVz,
  model.wf.tzz, model.pml.PTzzBVx, model.pml.PTzzBVz,
  model.nwf.BDntpp[2], model.nwf.BDntpp[1],
  model.wf.txz, model.nwf.BDntxz[2], model.nwf.BDntxz[1],
  model.pml.PTxzBVx, model.pml.PTxzBVz,
  model.medium.rho, model.medium.lambda, model.medium.mu, model.fdc,
  model.medium.dt, model.medium.dx, model.medium.dz, model.medium.ext,
  model.pml.bhalf, model.pml.ahalf, model.pml.bfull, model.pml.afull)
end

function run!(model::acmod2d)

 path="/home/lzh/Dropbox/Zhenhua/Ongoing/Seisimu/deps/builds/ac2d_openmp.so"

 ccall((:ac2d_openmp,path),
 Void,
 (Ptr{Cdouble}, Cint, Cint, Ptr{Cdouble},
  Ptr{Cdouble}, Cint, Cint, Ptr{Cdouble},
  Ptr{Cdouble}, Ptr{Cdouble}, Ptr{Cdouble},
  Cint, Cint,
  Ptr{Cdouble}, Ptr{Cdouble}, Ptr{Cdouble},
  Cdouble, Cdouble, Cdouble, Cint,
  Ptr{Cdouble}, Ptr{Cdouble}, Ptr{Cdouble}, Ptr{Cdouble}),
  model.wf.vx, model.nwf.BDnvx[2], model.nwf.BDnvx[1],
  model.pml.PVxBTpp,
  model.wf.vz, model.nwf.BDnvz[2], model.nwf.BDnvz[1],
  model.pml.PVzBTpp,
  model.wf.tpp, model.pml.PTppBVx, model.pml.PTppBVz,
  model.nwf.BDntpp[2], model.nwf.BDntpp[1],
  model.medium.rho, model.medium.lambda, model.fdc,
  model.medium.dt, model.medium.dx, model.medium.dz, model.medium.ext,
  model.pml.bhalf, model.pml.ahalf, model.pml.bfull, model.pml.afull)
end


text:
abstract type Tree{T} end

struct EmptyTree{T} <: Tree{T} end

struct ConsTree{T} <: Tree{T}
     value::T
     lefttree::Tree{T}
     righttree::Tree{T}
 end

 function ConsTree{T}(value::T) where {T}
    ConsTree{T}(value, EmptyTree{T}(), EmptyTree{T}())
 end

 function Base.isempty(tree::EmptyTree{T}) where {T}
     true
 end

 function Base.isempty(tree::ConsTree{T}) where {T}
    false
end

max_stars_repo_name: vikashdwd/JuML

max_issues_repo_name: vikashdwd/JuML

max_forks_repo_name: vikashdwd/JuML