def test_iO16_default_fp16_input(
        self,
        float32_input_model_add_op,
        int32_input_model,
    ):
        """
        With minimum_deployment_target set >= iOS16, if the compute precision is
        set to fp16. By default, a fp16 i/o model is produced for fp32 models.
        However, if the users specify the dtype, the converter is going to respect that.
        """
        # Case 1: fp32 single input model
        mlmodel = ct.convert(
            float32_input_model_add_op,
            inputs=[ct.TensorType(shape=(10, 20))],
            minimum_deployment_target=ct.target.iOS16,
        )
        assert_input_dtype(mlmodel, expected_type_str="fp16")
        verify_prediction(mlmodel)

        # Case 2: fp32 single input model
        mlmodel = ct.convert(
            float32_input_model_add_op,
            minimum_deployment_target=ct.target.iOS16,
        )
        assert_input_dtype(mlmodel, expected_type_str="fp16")
        verify_prediction(mlmodel)

        # Case 3: int32 single input model. No change made.
        mlmodel = ct.convert(
            int32_input_model,
            inputs=[ct.TensorType(shape=(10, 20))],
            minimum_deployment_target=ct.target.iOS16,
        )
        assert_input_dtype(mlmodel, expected_type_str="int32")
        verify_prediction(mlmodel)

        With minimum_deployment_target set >= iOS16, if the compute precision is
        set to fp16. By default, a fp16 i/o model is produced for fp32 models.
        However, if the users specify the dtype, the converter is going to respect that.
        
coremltools/converters/mil/frontend/tensorflow/test/test_tf_conversion_api.py