Added scalar math fuctions.
This commit is contained in:
64
tensor.c
64
tensor.c
@@ -170,6 +170,58 @@ int tensor_init_rand(tensor t, int dimension, const int *size, int max)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int tensor_cpy(tensor t1, const tensor t2)
|
||||||
|
{
|
||||||
|
assert(!tensor_is_empty(t2));
|
||||||
|
|
||||||
|
int i;
|
||||||
|
if(!_tensor_set_size(t1, t2->size, t2->dimension)) return 0;
|
||||||
|
for(i = 0; i < t2->num_elem; i++) {
|
||||||
|
t1->elements[i] = t2->elements[i];
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
void tensor_add_scalar(tensor t, dtype n)
|
||||||
|
{
|
||||||
|
assert(!tensor_is_empty(t));
|
||||||
|
|
||||||
|
int i;
|
||||||
|
for(i = 0; i < t->num_elem; i++) {
|
||||||
|
t->elements[i] += n;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void tensor_sub_scalar(tensor t, dtype n)
|
||||||
|
{
|
||||||
|
assert(!tensor_is_empty(t));
|
||||||
|
|
||||||
|
int i;
|
||||||
|
for(i = 0; i < t->num_elem; i++) {
|
||||||
|
t->elements[i] -= n;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void tensor_mult_scalar(tensor t, dtype n)
|
||||||
|
{
|
||||||
|
assert(!tensor_is_empty(t));
|
||||||
|
|
||||||
|
int i;
|
||||||
|
for(i = 0; i < t->num_elem; i++) {
|
||||||
|
t->elements[i] *= n;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void tensor_div_scalar(tensor t, dtype n)
|
||||||
|
{
|
||||||
|
assert(!tensor_is_empty(t));
|
||||||
|
|
||||||
|
int i;
|
||||||
|
for(i = 0; i < t->num_elem; i++) {
|
||||||
|
t->elements[i] /= n;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int tensor_add(tensor t1, const tensor t2)
|
int tensor_add(tensor t1, const tensor t2)
|
||||||
{
|
{
|
||||||
assert(!tensor_is_empty(t1));
|
assert(!tensor_is_empty(t1));
|
||||||
@@ -196,18 +248,6 @@ void tensor_for_each_elem(tensor t, dtype (*func)(dtype))
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int tensor_cpy(tensor t1, const tensor t2)
|
|
||||||
{
|
|
||||||
assert(!tensor_is_empty(t2));
|
|
||||||
|
|
||||||
int i;
|
|
||||||
if(!_tensor_set_size(t1, t2->size, t2->dimension)) return 0;
|
|
||||||
for(i = 0; i < t2->num_elem; i++) {
|
|
||||||
t1->elements[i] = t2->elements[i];
|
|
||||||
}
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
void tensor_print(const tensor t)
|
void tensor_print(const tensor t)
|
||||||
{
|
{
|
||||||
int i, j;
|
int i, j;
|
||||||
|
|||||||
6
tensor.h
6
tensor.h
@@ -35,11 +35,15 @@ dtype tensor_get(const tensor t, const int *index, int *success);
|
|||||||
int tensor_init_one(tensor t, int dimension, const int *size);
|
int tensor_init_one(tensor t, int dimension, const int *size);
|
||||||
int tensor_init_zero(tensor t, int dimension, const int *size);
|
int tensor_init_zero(tensor t, int dimension, const int *size);
|
||||||
int tensor_init_rand(tensor t, int dimension, const int *size, int max);
|
int tensor_init_rand(tensor t, int dimension, const int *size, int max);
|
||||||
|
int tensor_cpy(tensor t1, const tensor t2);
|
||||||
|
|
||||||
|
void tensor_add_scalar(tensor t, dtype n);
|
||||||
|
void tensor_sub_scalar(tensor t, dtype n);
|
||||||
|
void tensor_mult_scalar(tensor t, dtype n);
|
||||||
|
void tensor_div_scalar(tensor t, dtype n);
|
||||||
int tensor_add(tensor t1, const tensor t2);
|
int tensor_add(tensor t1, const tensor t2);
|
||||||
|
|
||||||
void tensor_for_each_elem(tensor t, dtype (*func)(dtype));
|
void tensor_for_each_elem(tensor t, dtype (*func)(dtype));
|
||||||
int tensor_cpy(tensor t1, const tensor t2);
|
|
||||||
void tensor_print(const tensor t);
|
void tensor_print(const tensor t);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user