12#include <learning/MathFunctions.h>
28 for (
int i=1; i<n; i++) {
40 for (
int i=1; i<n; i++) {
54 p[i] = (
real) exp (beta * Q[i]);
68 p[i] = (
real) exp (-beta * Q[i]);
123 assert(lambda>=0 && lambda<=1);
125 if (1-lambda/c <= t) {
126 gamma = t - (1-lambda)*(1-lambda) / (2*c);
127 }
else if (t>=-lambda/c) {
128 gamma = lambda * t + t*t*c/2;
130 gamma = - lambda * lambda / (2*c);
150 return (
real) pow(pow(f1,
p)+pow(f2,
p),1/
p);
164 for (i=0; i<n_elements; i++) {
168 for (i=0; i<n_elements; i++) {
174 for (i=0; i<n_elements; i++) {
182 for (
int i=0; i<n; i++) {
183 real d = (*a++) - (*b++);
192 for (
int i=0; i<n; i++) {
193 real d = (*a++) - (*b++);
196 return (
real) sqrt(sum);
202 for (
int i=0; i<n; i++) {
203 real d = (*a++) - (*b++);
204 sum += (
real) pow(d,
p);
206 return (
real) pow((
double)sum,1.0/
p);
212 for (
int i=0; i<n; i++) {
Scalar min(Scalar x, Scalar y)
Scalar max(Scalar x, Scalar y)
int ArgMin(int n, real *x)
real SmoothMaxGamma(real f1, real f2, real lambda, real c)
Approximate max (f1,f2) via a gamma function.
real LNorm(real *a, real *b, int n, real p)
void SoftMax(int n, real *Q, real *p, real beta)
void Normalise(real *src, real *dst, int n_elements)
Normalise a vector to a destination vector (low level)
void SoftMin(int n, real *Q, real *p, real beta)
int ArgMax(int n, real *x)
real SquareNorm(real *a, real *b, int n)
real SmoothMaxPNorm(real f1, real f2, real p)
Approximate max (f1,f2) via a power function.
real EuclideanNorm(real *a, real *b, int n)