MathUtils.smali

.class public final Lit/sephiroth/android/library/util/MathUtils;
.super Ljava/lang/Object;


# static fields
.field private static final DEG_TO_RAD:F = 0.017453292f

.field private static final RAD_TO_DEG:F = 57.295784f

.field private static final sRandom:Ljava/util/Random;


# direct methods
.method static constructor <clinit>()V
    .registers 1

    new-instance v0, Ljava/util/Random;

    invoke-direct {v0}, Ljava/util/Random;-><init>()V

    sput-object v0, Lit/sephiroth/android/library/util/MathUtils;->sRandom:Ljava/util/Random;

    return-void
.end method

.method private constructor <init>()V
    .registers 1

    invoke-direct {p0}, Ljava/lang/Object;-><init>()V

    return-void
.end method

.method public static abs(F)F
    .registers 2

    const/4 v0, 0x0

    cmpl-float v0, p0, v0

    if-lez v0, :cond_6

    goto :goto_7

    :cond_6
    neg-float p0, p0

    :goto_7
    return p0
.end method

.method public static acos(F)F
    .registers 3

    float-to-double v0, p0

    invoke-static {v0, v1}, Ljava/lang/Math;->acos(D)D

    move-result-wide v0

    double-to-float p0, v0

    return p0
.end method

.method public static asin(F)F
    .registers 3

    float-to-double v0, p0

    invoke-static {v0, v1}, Ljava/lang/Math;->asin(D)D

    move-result-wide v0

    double-to-float p0, v0

    return p0
.end method

.method public static atan(F)F
    .registers 3

    float-to-double v0, p0

    invoke-static {v0, v1}, Ljava/lang/Math;->atan(D)D

    move-result-wide v0

    double-to-float p0, v0

    return p0
.end method

.method public static atan2(FF)F
    .registers 4

    float-to-double v0, p0

    float-to-double p0, p1

    invoke-static {v0, v1, p0, p1}, Ljava/lang/Math;->atan2(DD)D

    move-result-wide p0

    double-to-float p0, p0

    return p0
.end method

.method public static constrain(FFF)F
    .registers 4

    cmpg-float v0, p0, p1

    if-gez v0, :cond_6

    move p0, p1

    goto :goto_b

    :cond_6
    cmpl-float p1, p0, p2

    if-lez p1, :cond_b

    move p0, p2

    :cond_b
    :goto_b
    return p0
.end method

.method public static constrain(III)I
    .registers 3

    if-ge p0, p1, :cond_4

    move p0, p1

    goto :goto_7

    :cond_4
    if-le p0, p2, :cond_7

    move p0, p2

    :cond_7
    :goto_7
    return p0
.end method

.method public static constrain(JJJ)J
    .registers 7

    cmp-long v0, p0, p2

    if-gez v0, :cond_6

    move-wide p0, p2

    goto :goto_b

    :cond_6
    cmp-long p2, p0, p4

    if-lez p2, :cond_b

    move-wide p0, p4

    :cond_b
    :goto_b
    return-wide p0
.end method

.method public static degrees(F)F
    .registers 2

    const v0, 0x42652ee2

    mul-float p0, p0, v0

    return p0
.end method

.method public static dist(FFFF)F
    .registers 4

    sub-float/2addr p2, p0

    sub-float/2addr p3, p1

    mul-float p2, p2, p2

    mul-float p3, p3, p3

    add-float/2addr p2, p3

    float-to-double p0, p2

    invoke-static {p0, p1}, Ljava/lang/Math;->sqrt(D)D

    move-result-wide p0

    double-to-float p0, p0

    return p0
.end method

.method public static dist(FFFFFF)F
    .registers 6

    sub-float/2addr p3, p0

    sub-float/2addr p4, p1

    sub-float/2addr p5, p2

    mul-float p3, p3, p3

    mul-float p4, p4, p4

    add-float/2addr p3, p4

    mul-float p5, p5, p5

    add-float/2addr p3, p5

    float-to-double p0, p3

    invoke-static {p0, p1}, Ljava/lang/Math;->sqrt(D)D

    move-result-wide p0

    double-to-float p0, p0

    return p0
.end method

.method public static exp(F)F
    .registers 3

    float-to-double v0, p0

    invoke-static {v0, v1}, Ljava/lang/Math;->exp(D)D

    move-result-wide v0

    double-to-float p0, v0

    return p0
.end method

.method public static lerp(FFF)F
    .registers 3

    sub-float/2addr p1, p0

    mul-float p1, p1, p2

    add-float/2addr p0, p1

    return p0
.end method

.method public static log(F)F
    .registers 3

    float-to-double v0, p0

    invoke-static {v0, v1}, Ljava/lang/Math;->log(D)D

    move-result-wide v0

    double-to-float p0, v0

    return p0
.end method

.method public static mag(FF)F
    .registers 2

    mul-float p0, p0, p0

    mul-float p1, p1, p1

    add-float/2addr p0, p1

    float-to-double p0, p0

    invoke-static {p0, p1}, Ljava/lang/Math;->sqrt(D)D

    move-result-wide p0

    double-to-float p0, p0

    return p0
.end method

.method public static mag(FFF)F
    .registers 3

    mul-float p0, p0, p0

    mul-float p1, p1, p1

    add-float/2addr p0, p1

    mul-float p2, p2, p2

    add-float/2addr p0, p2

    float-to-double p0, p0

    invoke-static {p0, p1}, Ljava/lang/Math;->sqrt(D)D

    move-result-wide p0

    double-to-float p0, p0

    return p0
.end method

.method public static map(FFFFF)F
    .registers 5

    sub-float p3, p2, p3

    sub-float/2addr p4, p0

    sub-float/2addr p1, p0

    div-float/2addr p4, p1

    mul-float p3, p3, p4

    add-float/2addr p2, p3

    return p2
.end method

.method public static max(FF)F
    .registers 3

    cmpl-float v0, p0, p1

    if-lez v0, :cond_5

    goto :goto_6

    :cond_5
    move p0, p1

    :goto_6
    return p0
.end method

.method public static max(FFF)F
    .registers 4

    cmpl-float v0, p0, p1

    if-lez v0, :cond_9

    cmpl-float p1, p0, p2

    if-lez p1, :cond_f

    goto :goto_10

    :cond_9
    cmpl-float p0, p1, p2

    if-lez p0, :cond_f

    move p0, p1

    goto :goto_10

    :cond_f
    move p0, p2

    :goto_10
    return p0
.end method

.method public static max(II)F
    .registers 2

    if-le p0, p1, :cond_4

    int-to-float p0, p0

    goto :goto_5

    :cond_4
    int-to-float p0, p1

    :goto_5
    return p0
.end method

.method public static max(III)F
    .registers 3

    if-le p0, p1, :cond_8

    if-le p0, p2, :cond_5

    goto :goto_6

    :cond_5
    move p0, p2

    :goto_6
    int-to-float p0, p0

    goto :goto_d

    :cond_8
    if-le p1, p2, :cond_b

    goto :goto_c

    :cond_b
    move p1, p2

    :goto_c
    int-to-float p0, p1

    :goto_d
    return p0
.end method

.method public static min(FF)F
    .registers 3

    cmpg-float v0, p0, p1

    if-gez v0, :cond_5

    goto :goto_6

    :cond_5
    move p0, p1

    :goto_6
    return p0
.end method

.method public static min(FFF)F
    .registers 4

    cmpg-float v0, p0, p1

    if-gez v0, :cond_9

    cmpg-float p1, p0, p2

    if-gez p1, :cond_f

    goto :goto_10

    :cond_9
    cmpg-float p0, p1, p2

    if-gez p0, :cond_f

    move p0, p1

    goto :goto_10

    :cond_f
    move p0, p2

    :goto_10
    return p0
.end method

.method public static min(II)F
    .registers 2

    if-ge p0, p1, :cond_4

    int-to-float p0, p0

    goto :goto_5

    :cond_4
    int-to-float p0, p1

    :goto_5
    return p0
.end method

.method public static min(III)F
    .registers 3

    if-ge p0, p1, :cond_8

    if-ge p0, p2, :cond_5

    goto :goto_6

    :cond_5
    move p0, p2

    :goto_6
    int-to-float p0, p0

    goto :goto_d

    :cond_8
    if-ge p1, p2, :cond_b

    goto :goto_c

    :cond_b
    move p1, p2

    :goto_c
    int-to-float p0, p1

    :goto_d
    return p0
.end method

.method public static norm(FFF)F
    .registers 3

    sub-float/2addr p2, p0

    sub-float/2addr p1, p0

    div-float/2addr p2, p1

    return p2
.end method

.method public static pow(FF)F
    .registers 4

    float-to-double v0, p0

    float-to-double p0, p1

    invoke-static {v0, v1, p0, p1}, Ljava/lang/Math;->pow(DD)D

    move-result-wide p0

    double-to-float p0, p0

    return p0
.end method

.method public static radians(F)F
    .registers 2

    const v0, 0x3c8efa35

    mul-float p0, p0, v0

    return p0
.end method

.method public static random(F)F
    .registers 2

    sget-object v0, Lit/sephiroth/android/library/util/MathUtils;->sRandom:Ljava/util/Random;

    invoke-virtual {v0}, Ljava/util/Random;->nextFloat()F

    move-result v0

    mul-float v0, v0, p0

    return v0
.end method

.method public static random(FF)F
    .registers 3

    cmpl-float v0, p0, p1

    if-ltz v0, :cond_5

    return p0

    :cond_5
    sget-object v0, Lit/sephiroth/android/library/util/MathUtils;->sRandom:Ljava/util/Random;

    invoke-virtual {v0}, Ljava/util/Random;->nextFloat()F

    move-result v0

    sub-float/2addr p1, p0

    mul-float v0, v0, p1

    add-float/2addr v0, p0

    return v0
.end method

.method public static random(I)I
    .registers 2

    sget-object v0, Lit/sephiroth/android/library/util/MathUtils;->sRandom:Ljava/util/Random;

    invoke-virtual {v0}, Ljava/util/Random;->nextFloat()F

    move-result v0

    int-to-float p0, p0

    mul-float v0, v0, p0

    float-to-int p0, v0

    return p0
.end method

.method public static random(II)I
    .registers 3

    if-lt p0, p1, :cond_3

    return p0

    :cond_3
    sget-object v0, Lit/sephiroth/android/library/util/MathUtils;->sRandom:Ljava/util/Random;

    invoke-virtual {v0}, Ljava/util/Random;->nextFloat()F

    move-result v0

    sub-int/2addr p1, p0

    int-to-float p1, p1

    mul-float v0, v0, p1

    int-to-float p0, p0

    add-float/2addr v0, p0

    float-to-int p0, v0

    return p0
.end method

.method public static randomSeed(J)V
    .registers 3

    sget-object v0, Lit/sephiroth/android/library/util/MathUtils;->sRandom:Ljava/util/Random;

    invoke-virtual {v0, p0, p1}, Ljava/util/Random;->setSeed(J)V

    return-void
.end method

.method public static sq(F)F
    .registers 1

    mul-float p0, p0, p0

    return p0
.end method

.method public static tan(F)F
    .registers 3

    float-to-double v0, p0

    invoke-static {v0, v1}, Ljava/lang/Math;->tan(D)D

    move-result-wide v0

    double-to-float p0, v0

    return p0
.end method