<commit_before>#include <isl/set.h>
#include <isl/union_map.h>
#include <isl/union_set.h>
#include <isl/ast_build.h>
#include <isl/schedule.h>
#include <isl/schedule_node.h>

#include <coli/debug.h>
#include <coli/core.h>

#include <string.h>
#include <Halide.h>

using namespace coli;

int main(int argc, char **argv)
{
    // Set default coli options.
    global::set_default_coli_options();

    // Declare a function.
    // A function in coli is the equivalent of a function in C.
    // It can have input and output buffers.  The buffers are declared later.
    function function0("function0");

    // Create a buffer buf0.  This buffer is supposed to be allocated outside
    // the function "function0" and passed to it as an argument.
    // Buffers of type a_output or type::argument::input
    // should be allocated outside the function and passed as arguments to the
    // function.  Buffers of type type::argument::temporary are
    // allocated automatically by coli within the function and thus should
    // not be passed as arguments to the function.
    buffer buf0("buf0", 2, {coli::expr(10),coli::expr(10)}, p_uint8, NULL, a_output, &function0);

    // Declare the invariants of the function.  An invariant can be a symbolic
    // constant or a variable that does not change during the execution of the
    // function.<commit_msg>Update tutorial_01.cpp<commit_after>#include <isl/set.h>
#include <isl/union_map.h>
#include <isl/union_set.h>
#include <isl/ast_build.h>
#include <isl/schedule.h>
#include <isl/schedule_node.h>

#include <coli/debug.h>
#include <coli/core.h>

#include <string.h>
#include <Halide.h>

using namespace coli;

/*
int N = 10;
for (int i=0; i<N; i++)
  for (int j=0; j<N; j++)
     buf0[i,j] = 3 + 4;
*/

int main(int argc, char **argv)
{
    // Set default coli options.
    global::set_default_coli_options();

    // Declare a function.
    // A function in coli is the equivalent of a function in C.
    // It can have input and output buffers.  The buffers are declared later.
    function function0("function0");

    // Create a buffer buf0.  This buffer is supposed to be allocated outside
    // the function "function0" and passed to it as an argument.
    // Buffers of type a_output or type::argument::input
    // should be allocated outside the function and passed as arguments to the
    // function.  Buffers of type type::argument::temporary are
    // allocated automatically by coli within the function and thus should
    // not be passed as arguments to the function.
    buffer buf0("buf0", 2, {coli::expr(10),coli::expr(10)}, p_uint8, NULL, a_output, &function0);

    // Declare the invariants of the function.  An invariant can be a symbolic
    // constant or a variable that does not change during the execution of the
    // function.
{'fraction_non_alphanumeric': 0.10980810234541578, 'fraction_numerical': 0.012437810945273632, 'mean_word_length': 3.3042813455657494, 'pattern_counts': {'":': 0, '<': 25, '<?xml version=': 0, '>': 23, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6480183', 'n_tokens_mistral': 882, 'n_tokens_neox': 840, 'n_words': 336}