28#ifndef OZZ_OZZ_BASE_MATHS_MATH_EX_H_
29#define OZZ_OZZ_BASE_MATHS_MATH_EX_H_
34#include "ozz/base/platform.h"
41OZZ_INLINE
float Lerp(
float _a,
float _b,
float _f) {
42 return (_b - _a) * _f + _a;
46template <
typename _Ty>
47OZZ_INLINE _Ty Min(_Ty _a, _Ty _b) {
48 return (_a < _b) ? _a : _b;
52template <
typename _Ty>
53OZZ_INLINE _Ty Max(_Ty _a, _Ty _b) {
54 return (_b < _a) ? _a : _b;
59template <
typename _Ty>
60OZZ_INLINE _Ty Clamp(_Ty _a, _Ty _x, _Ty _b) {
61 const _Ty min = _x < _b ? _x : _b;
62 return min < _a ? _a : min;
66OZZ_INLINE
int Select(
bool _b,
int _true,
int _false) {
67 return _false ^ (-
static_cast<int>(_b) & (_true ^ _false));
71OZZ_INLINE
float Select(
bool _b,
float _true,
float _false) {
83 } r = {f.i ^ (-
static_cast<int32_t>(_b) & (t.i ^ f.i))};
88template <
typename _Ty>
89OZZ_INLINE _Ty* Select(
bool _b, _Ty* _true, _Ty* _false) {
101 } r = {f.i ^ (-
static_cast<intptr_t
>(_b) & (t.i ^ f.i))};
106template <
typename _Ty>
107OZZ_INLINE
const _Ty* Select(
bool _b,
const _Ty* _true,
const _Ty* _false) {
119 } r = {f.i ^ (-
static_cast<intptr_t
>(_b) & (t.i ^ f.i))};
int32 int32_t
Definition fwd.hpp:71