11#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION
2+ #include "utils.h"
23#include <Python.h>
34#include <math.h>
45#include <numpy/arrayobject.h>
56#include <numpy/npy_math.h>
6- #include "utils.h"
77
88
9- static PyObject * largest_triangle_three_buckets (PyObject * self , PyObject * args ) {
9+ static PyObject * largest_triangle_three_buckets (PyObject * self ,
10+ PyObject * args ) {
1011 PyObject * x_obj , * y_obj ;
1112 PyArrayObject * x_array = NULL , * y_array = NULL ;
1213 int threshold ;
@@ -56,14 +57,14 @@ static PyObject *largest_triangle_three_buckets(PyObject *self, PyObject *args)
5657 // Create an empty output array with shape and dim for the output!
5758 npy_intp dims [1 ];
5859 dims [0 ] = threshold ;
59- PyArrayObject * result_x = (PyArrayObject * )PyArray_Empty (1 , dims ,
60- PyArray_DescrFromType (NPY_DOUBLE ), 0 );
61- PyArrayObject * result_y = (PyArrayObject * )PyArray_Empty (1 , dims ,
62- PyArray_DescrFromType (NPY_DOUBLE ), 0 );
60+ PyArrayObject * result_x = (PyArrayObject * )PyArray_Empty (
61+ 1 , dims , PyArray_DescrFromType (NPY_DOUBLE ), 0 );
62+ PyArrayObject * result_y = (PyArrayObject * )PyArray_Empty (
63+ 1 , dims , PyArray_DescrFromType (NPY_DOUBLE ), 0 );
6364
6465 // Get a pointer to its data
65- double * result_x_data = (double * )PyArray_DATA (result_x );
66- double * result_y_data = (double * )PyArray_DATA (result_y );
66+ double * result_x_data = (double * )PyArray_DATA (result_x );
67+ double * result_y_data = (double * )PyArray_DATA (result_y );
6768
6869 // The main loop here!
6970 const double every = (double )(len_points - 2 ) / (threshold - 2 );
@@ -82,14 +83,14 @@ static PyObject *largest_triangle_three_buckets(PyObject *self, PyObject *args)
8283 // Calculate point average for next bucket (containing c)
8384 double avg_x = 0 ;
8485 double avg_y = 0 ;
85- npy_intp avg_start = (npy_intp )(floor ((i + 1 )* every ) + 1 );
86+ npy_intp avg_start = (npy_intp )(floor ((i + 1 ) * every ) + 1 );
8687 npy_intp avg_end = (npy_intp )(floor ((i + 2 ) * every ) + 1 );
87- if (avg_end >= len_points ){
88+ if (avg_end >= len_points ) {
8889 avg_end = len_points ;
8990 }
9091 npy_intp avg_length = avg_end - avg_start ;
9192
92- for (;avg_start < avg_end ; avg_start ++ ){
93+ for (; avg_start < avg_end ; avg_start ++ ) {
9394 avg_x += x [avg_start ];
9495 avg_y += y [avg_start ];
9596 }
@@ -105,13 +106,14 @@ static PyObject *largest_triangle_three_buckets(PyObject *self, PyObject *args)
105106 double point_a_y = y [a ];
106107
107108 double max_area = -1.0 ;
108- for (; k < range_to ; k ++ ){
109+ for (; k < range_to ; k ++ ) {
109110 // Calculate triangle area over three buckets
110111 double point_data [2 ] = {point_a_x , point_a_y };
111112 double avg_data [2 ] = {avg_y , avg_y };
112113 double next_data [2 ] = {x [k ], y [k ]};
113- double area = calculate_triangle_area (point_data , avg_data , next_data );
114- if (area > max_area ){
114+ double area =
115+ calculate_triangle_area (point_data , avg_data , next_data );
116+ if (area > max_area ) {
115117 max_area = area ;
116118 max_area_point_x = x [k ];
117119 max_area_point_y = y [k ];
@@ -149,8 +151,7 @@ static PyObject *largest_triangle_three_buckets(PyObject *self, PyObject *args)
149151
150152
151153static PyMethodDef LTTBMethods [] = {
152- {"largest_triangle_three_buckets" ,
153- largest_triangle_three_buckets ,
154+ {"largest_triangle_three_buckets" , largest_triangle_three_buckets ,
154155 METH_VARARGS ,
155156 "Compute the largest triangle three buckets (LTTB) algorithm in a C "
156157 "extension." },
0 commit comments