1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101
|
//------------------------------------------------------------------------------
// GB_uop.c: hard-coded functions for each built-in unary operator
//------------------------------------------------------------------------------
// SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2025, All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
//------------------------------------------------------------------------------
#include "GB_control.h"
#if defined (GxB_NO_FP32)
#define GB_TYPE_ENABLED 0
#else
#define GB_TYPE_ENABLED 1
#endif
#if GB_TYPE_ENABLED
#include "GB.h"
#include "FactoryKernels/GB_uop__include.h"
// unary operator: z = f(x)
#define GB_UNARYOP(z,x) z = atanf (x)
#define GB_Z_TYPE float
#define GB_X_TYPE float
// A matrix
#define GB_A_TYPE float
#define GB_DECLAREA(aij) float aij
#define GB_GETA(aij,Ax,pA,A_iso) aij = Ax [pA]
// C matrix
#define GB_C_TYPE float
#define GB_Cp_IS_32 Cp_is_32
// cij = op (aij)
#define GB_APPLY_OP(pC,pA) \
{ \
/* aij = Ax [pA] */ \
GB_DECLAREA (aij) ; \
GB_GETA (aij, Ax, pA, false) ; \
/* Cx [pC] = unaryop (aij) */ \
GB_UNARYOP (Cx [pC], aij) ; \
}
// disable this operator and use the generic case if these conditions hold
#if (defined(GxB_NO_ATAN) || defined(GxB_NO_FP32))
#define GB_DISABLE 1
#else
#define GB_DISABLE 0
#endif
#include "omp/include/GB_kernel_shared_definitions.h"
//------------------------------------------------------------------------------
// Cx = op (cast (Ax)): apply a unary operator
//------------------------------------------------------------------------------
GrB_Info GB (_uop_apply__atan_fp32_fp32)
(
GB_void *Cx_out, // Cx and Ax may be aliased
const GB_void *Ax_in, // A is always non-iso for this kernel
const int8_t *restrict Ab, // A->b if A is bitmap
int64_t anz,
int nthreads
)
{
#if GB_DISABLE
return (GrB_NO_VALUE) ;
#else
#include "apply/factory/GB_apply_unop_template.c"
return (GrB_SUCCESS) ;
#endif
}
//------------------------------------------------------------------------------
// C = op (cast (A')): transpose, typecast, and apply a unary operator
//------------------------------------------------------------------------------
GrB_Info GB (_uop_tran__atan_fp32_fp32)
(
GrB_Matrix C,
const GrB_Matrix A,
void **Workspaces,
const int64_t *restrict A_slice,
int nworkspaces,
int nthreads
)
{
#if GB_DISABLE
return (GrB_NO_VALUE) ;
#else
bool Cp_is_32 = C->p_is_32 ;
#include "transpose/template/GB_transpose_template.c"
return (GrB_SUCCESS) ;
#endif
}
#else
GB_EMPTY_PLACEHOLDER
#endif
|