#pragma once

#include "shared_indices.h"
#include <cuda_runtime.h>

namespace caspar {

void PinholeFixedPoseResJac(double* sensor_from_rig,
                            unsigned int sensor_from_rig_num_alloc,
                            double* calib,
                            unsigned int calib_num_alloc,
                            SharedIndex* calib_indices,
                            double* point,
                            unsigned int point_num_alloc,
                            SharedIndex* point_indices,
                            double* pixel,
                            unsigned int pixel_num_alloc,
                            double* pose,
                            unsigned int pose_num_alloc,
                            double* out_res,
                            unsigned int out_res_num_alloc,
                            double* out_calib_jac,
                            unsigned int out_calib_jac_num_alloc,
                            double* const out_calib_njtr,
                            unsigned int out_calib_njtr_num_alloc,
                            double* const out_calib_precond_diag,
                            unsigned int out_calib_precond_diag_num_alloc,
                            double* const out_calib_precond_tril,
                            unsigned int out_calib_precond_tril_num_alloc,
                            double* out_point_jac,
                            unsigned int out_point_jac_num_alloc,
                            double* const out_point_njtr,
                            unsigned int out_point_njtr_num_alloc,
                            double* const out_point_precond_diag,
                            unsigned int out_point_precond_diag_num_alloc,
                            double* const out_point_precond_tril,
                            unsigned int out_point_precond_tril_num_alloc,
                            size_t problem_size);

}  // namespace caspar