Nothing
Code
fn
Output
function(a, b) {
declare(type(a = double(n)), type(b = double(n)))
a %% b
}
<environment: 0x0>
Code
cat(fsub)
Output
subroutine fn(a, b, out_, a__len_) bind(c)
use iso_c_binding, only: c_double, c_ptrdiff_t
implicit none
! manifest start
! sizes
integer(c_ptrdiff_t), intent(in), value :: a__len_
! args
real(c_double), intent(in) :: a(a__len_)
real(c_double), intent(in) :: b(a__len_)
real(c_double), intent(out) :: out_(a__len_)
! manifest end
out_ = modulo(a, b)
end subroutine
Code
cat(cwrapper)
Output
#define R_NO_REMAP
#include <R.h>
#include <Rinternals.h>
extern void fn(
const double* const a__,
const double* const b__,
double* const out___,
const R_xlen_t a__len_);
SEXP fn_(SEXP _args) {
// a
_args = CDR(_args);
SEXP a = CAR(_args);
if (TYPEOF(a) != REALSXP) {
Rf_error("typeof(a) must be 'double', not '%s'", R_typeToChar(a));
}
const double* const a__ = REAL(a);
const R_xlen_t a__len_ = Rf_xlength(a);
// b
_args = CDR(_args);
SEXP b = CAR(_args);
if (TYPEOF(b) != REALSXP) {
Rf_error("typeof(b) must be 'double', not '%s'", R_typeToChar(b));
}
const double* const b__ = REAL(b);
const R_xlen_t b__len_ = Rf_xlength(b);
if (a__len_ != b__len_)
Rf_error("length(b) must equal length(a),"
" but are %0.f and %0.f",
(double)b__len_, (double)a__len_);
const R_xlen_t out___len_ = a__len_;
SEXP out_ = PROTECT(Rf_allocVector(REALSXP, out___len_));
double* out___ = REAL(out_);
fn(
a__,
b__,
out___,
a__len_);
UNPROTECT(1);
return out_;
}
Code
fn
Output
function(a, b) {
declare(type(a = double(n)), type(b = double(n)))
a %/% b
}
<environment: 0x0>
Code
cat(fsub)
Output
subroutine fn(a, b, out_, a__len_) bind(c)
use iso_c_binding, only: c_double, c_ptrdiff_t
implicit none
! manifest start
! sizes
integer(c_ptrdiff_t), intent(in), value :: a__len_
! args
real(c_double), intent(in) :: a(a__len_)
real(c_double), intent(in) :: b(a__len_)
real(c_double), intent(out) :: out_(a__len_)
! manifest end
out_ = floor(a / b)
end subroutine
Code
cat(cwrapper)
Output
#define R_NO_REMAP
#include <R.h>
#include <Rinternals.h>
extern void fn(
const double* const a__,
const double* const b__,
double* const out___,
const R_xlen_t a__len_);
SEXP fn_(SEXP _args) {
// a
_args = CDR(_args);
SEXP a = CAR(_args);
if (TYPEOF(a) != REALSXP) {
Rf_error("typeof(a) must be 'double', not '%s'", R_typeToChar(a));
}
const double* const a__ = REAL(a);
const R_xlen_t a__len_ = Rf_xlength(a);
// b
_args = CDR(_args);
SEXP b = CAR(_args);
if (TYPEOF(b) != REALSXP) {
Rf_error("typeof(b) must be 'double', not '%s'", R_typeToChar(b));
}
const double* const b__ = REAL(b);
const R_xlen_t b__len_ = Rf_xlength(b);
if (a__len_ != b__len_)
Rf_error("length(b) must equal length(a),"
" but are %0.f and %0.f",
(double)b__len_, (double)a__len_);
const R_xlen_t out___len_ = a__len_;
SEXP out_ = PROTECT(Rf_allocVector(REALSXP, out___len_));
double* out___ = REAL(out_);
fn(
a__,
b__,
out___,
a__len_);
UNPROTECT(1);
return out_;
}
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.