static const float complex

One of the following permutations of static const float complex showed up in a code review at work today. It made me wonder which permutations would compile. The answer: they all do. Have fun.

#include <stdio.h>
#include <complex.h>

/*
#!/bin/usr/env python3
import itertools
for perm in itertools.permutations(["static", "const", "float", "complex"]):
    print(" ".join(perm))
*/

int main (void) {
    static const float complex static_const_float_complex = 0 + 1 * I;
    static const complex float static_const_complex_float = 0 + 1 * I;
    static float const complex static_float_const_complex = 0 + 1 * I;
    static float complex const static_float_complex_const = 0 + 1 * I;
    static complex const float static_complex_const_float = 0 + 1 * I;
    static complex float const static_complex_float_const = 0 + 1 * I;
    const static float complex const_static_float_complex = 0 + 1 * I;
    const static complex float const_static_complex_float = 0 + 1 * I;
    const float static complex const_float_static_complex = 0 + 1 * I;
    const float complex static const_float_complex_static = 0 + 1 * I;
    const complex static float const_complex_static_float = 0 + 1 * I;
    const complex float static const_complex_float_static = 0 + 1 * I;
    float static const complex float_static_const_complex = 0 + 1 * I;
    float static complex const float_static_complex_const = 0 + 1 * I;
    float const static complex float_const_static_complex = 0 + 1 * I;
    float const complex static float_const_complex_static = 0 + 1 * I;
    float complex static const float_complex_static_const = 0 + 1 * I;
    float complex const static float_complex_const_static = 0 + 1 * I;
    complex static const float complex_static_const_float = 0 + 1 * I;
    complex static float const complex_static_float_const = 0 + 1 * I;
    complex const static float complex_const_static_float = 0 + 1 * I;
    complex const float static complex_const_float_static = 0 + 1 * I;
    complex float static const complex_float_static_const = 0 + 1 * I;
    complex float const static complex_float_const_static = 0 + 1 * I;

    printf("static_const_float_complex: (%f,%f)\n", crealf(static_const_float_complex), cimagf(static_const_float_complex));
    printf("static_const_complex_float: (%f,%f)\n", crealf(static_const_complex_float), cimagf(static_const_complex_float));
    printf("static_float_const_complex: (%f,%f)\n", crealf(static_float_const_complex), cimagf(static_float_const_complex));
    printf("static_float_complex_const: (%f,%f)\n", crealf(static_float_complex_const), cimagf(static_float_complex_const));
    printf("static_complex_const_float: (%f,%f)\n", crealf(static_complex_const_float), cimagf(static_complex_const_float));
    printf("static_complex_float_const: (%f,%f)\n", crealf(static_complex_float_const), cimagf(static_complex_float_const));
    printf("const_static_float_complex: (%f,%f)\n", crealf(const_static_float_complex), cimagf(const_static_float_complex));
    printf("const_static_complex_float: (%f,%f)\n", crealf(const_static_complex_float), cimagf(const_static_complex_float));
    printf("const_float_static_complex: (%f,%f)\n", crealf(const_float_static_complex), cimagf(const_float_static_complex));
    printf("const_float_complex_static: (%f,%f)\n", crealf(const_float_complex_static), cimagf(const_float_complex_static));
    printf("const_complex_static_float: (%f,%f)\n", crealf(const_complex_static_float), cimagf(const_complex_static_float));
    printf("const_complex_float_static: (%f,%f)\n", crealf(const_complex_float_static), cimagf(const_complex_float_static));
    printf("float_static_const_complex: (%f,%f)\n", crealf(float_static_const_complex), cimagf(float_static_const_complex));
    printf("float_static_complex_const: (%f,%f)\n", crealf(float_static_complex_const), cimagf(float_static_complex_const));
    printf("float_const_static_complex: (%f,%f)\n", crealf(float_const_static_complex), cimagf(float_const_static_complex));
    printf("float_const_complex_static: (%f,%f)\n", crealf(float_const_complex_static), cimagf(float_const_complex_static));
    printf("float_complex_static_const: (%f,%f)\n", crealf(float_complex_static_const), cimagf(float_complex_static_const));
    printf("float_complex_const_static: (%f,%f)\n", crealf(float_complex_const_static), cimagf(float_complex_const_static));
    printf("complex_static_const_float: (%f,%f)\n", crealf(complex_static_const_float), cimagf(complex_static_const_float));
    printf("complex_static_float_const: (%f,%f)\n", crealf(complex_static_float_const), cimagf(complex_static_float_const));
    printf("complex_const_static_float: (%f,%f)\n", crealf(complex_const_static_float), cimagf(complex_const_static_float));
    printf("complex_const_float_static: (%f,%f)\n", crealf(complex_const_float_static), cimagf(complex_const_float_static));
    printf("complex_float_static_const: (%f,%f)\n", crealf(complex_float_static_const), cimagf(complex_float_static_const));
    printf("complex_float_const_static: (%f,%f)\n", crealf(complex_float_const_static), cimagf(complex_float_const_static));
}
$ make
gcc -Wall -Wpedantic -o scfc scfc.c  -lm
$ ./scfc
static_const_float_complex: (0.000000,1.000000)
static_const_complex_float: (0.000000,1.000000)
static_float_const_complex: (0.000000,1.000000)
static_float_complex_const: (0.000000,1.000000)
static_complex_const_float: (0.000000,1.000000)
static_complex_float_const: (0.000000,1.000000)
const_static_float_complex: (0.000000,1.000000)
const_static_complex_float: (0.000000,1.000000)
const_float_static_complex: (0.000000,1.000000)
const_float_complex_static: (0.000000,1.000000)
const_complex_static_float: (0.000000,1.000000)
const_complex_float_static: (0.000000,1.000000)
float_static_const_complex: (0.000000,1.000000)
float_static_complex_const: (0.000000,1.000000)
float_const_static_complex: (0.000000,1.000000)
float_const_complex_static: (0.000000,1.000000)
float_complex_static_const: (0.000000,1.000000)
float_complex_const_static: (0.000000,1.000000)
complex_static_const_float: (0.000000,1.000000)
complex_static_float_const: (0.000000,1.000000)
complex_const_static_float: (0.000000,1.000000)
complex_const_float_static: (0.000000,1.000000)
complex_float_static_const: (0.000000,1.000000)
complex_float_const_static: (0.000000,1.000000)

© Copyright 2024, Remington Furman

blog@remcycles.net

@remcycles@subdued.social