#ifndef SWIFT_MATHS_QUATF_H
#define SWIFT_MATHS_QUATF_H

#include <swift/stdlib.h>

#include <swift/maths/api.h>
#include <swift/maths/vec4f.h>

typedef union swift_quatf_t swift_quatf_t;

union swift_quatf_t {
	struct {
		float x, y, w, h;
	}xywh;

	swift_vec4f_t vec;
	float data[4];
};

#define SWIFT_QUATF(...) ((swift_quatf_t){__VA_ARGS__})

SWIFT_MATHS_API swift_quatf_t swift_quatf_from_axis(swift_vec3f_t axis,
	float angle);
SWIFT_MATHS_API swift_quatf_t swift_quatf_add_scalar(swift_quatf_t lhs,
	float rhs);
SWIFT_MATHS_API swift_quatf_t swift_quatf_sub_scalar(swift_quatf_t lhs,
	float rhs);
SWIFT_MATHS_API swift_quatf_t swift_quatf_mul_scalar(swift_quatf_t lhs,
	float rhs);
SWIFT_MATHS_API swift_quatf_t swift_quatf_div_scalar(swift_quatf_t lhs,
	float rhs);
SWIFT_MATHS_API swift_quatf_t swift_quatf_conj(swift_quatf_t quat);
SWIFT_MATHS_API float swift_quatf_norm(swift_quatf_t quat);
SWIFT_MATHS_API swift_quatf_t swift_quatf_normalise(swift_quatf_t quat);

#endif /* SWIFT_MATHS_QUATF_H */
