OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [libgo/] [go/] [math/] [dim.go] - Blame information for rev 747

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 747 jeremybenn
// Copyright 2010 The Go Authors. All rights reserved.
2
// Use of this source code is governed by a BSD-style
3
// license that can be found in the LICENSE file.
4
 
5
package math
6
 
7
// Dim returns the maximum of x-y or 0.
8
//
9
// Special cases are:
10
//      Dim(+Inf, +Inf) = NaN
11
//      Dim(-Inf, -Inf) = NaN
12
//      Dim(x, NaN) = Dim(NaN, x) = NaN
13
func Dim(x, y float64) float64 {
14
        return dim(x, y)
15
}
16
 
17
func dim(x, y float64) float64 {
18
        return max(x-y, 0)
19
}
20
 
21
// Max returns the larger of x or y.
22
//
23
// Special cases are:
24
//      Max(x, +Inf) = Max(+Inf, x) = +Inf
25
//      Max(x, NaN) = Max(NaN, x) = NaN
26
//      Max(+0, ±0) = Max(±0, +0) = +0
27
//      Max(-0, -0) = -0
28
func Max(x, y float64) float64 {
29
        return max(x, y)
30
}
31
 
32
func max(x, y float64) float64 {
33
        // special cases
34
        switch {
35
        case IsInf(x, 1) || IsInf(y, 1):
36
                return Inf(1)
37
        case IsNaN(x) || IsNaN(y):
38
                return NaN()
39
        case x == 0 && x == y:
40
                if Signbit(x) {
41
                        return y
42
                }
43
                return x
44
        }
45
        if x > y {
46
                return x
47
        }
48
        return y
49
}
50
 
51
// Min returns the smaller of x or y.
52
//
53
// Special cases are:
54
//      Min(x, -Inf) = Min(-Inf, x) = -Inf
55
//      Min(x, NaN) = Min(NaN, x) = NaN
56
//      Min(-0, ±0) = Min(±0, -0) = -0
57
func Min(x, y float64) float64 {
58
        return min(x, y)
59
}
60
 
61
func min(x, y float64) float64 {
62
        // special cases
63
        switch {
64
        case IsInf(x, -1) || IsInf(y, -1):
65
                return Inf(-1)
66
        case IsNaN(x) || IsNaN(y):
67
                return NaN()
68
        case x == 0 && x == y:
69
                if Signbit(x) {
70
                        return x
71
                }
72
                return y
73
        }
74
        if x < y {
75
                return x
76
        }
77
        return y
78
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.